valar 1.2.0__py3-none-any.whl → 1.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of valar might be problematic. Click here for more details.
- valar/classes/app_mixins/auto_migration_mixin.py +2 -2
- {valar-1.2.0.dist-info → valar-1.2.1.dist-info}/METADATA +9 -14
- {valar-1.2.0.dist-info → valar-1.2.1.dist-info}/RECORD +13 -6
- {valar-1.2.0.dist-info → valar-1.2.1.dist-info}/top_level.txt +1 -0
- vtest/__init__.py +0 -0
- vtest/apps.py +17 -0
- vtest/handlers.py +15 -0
- vtest/migrations/0001_initial.py +155 -0
- vtest/migrations/__init__.py +0 -0
- vtest/models.py +59 -0
- vtest/views.py +8 -0
- {valar-1.2.0.dist-info → valar-1.2.1.dist-info}/WHEEL +0 -0
- {valar-1.2.0.dist-info → valar-1.2.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
class AutoMigrationMixin:
|
|
2
2
|
name = None # 子类必须提供
|
|
3
|
+
|
|
3
4
|
def auto_migrate(self):
|
|
4
5
|
from django.core.management import call_command
|
|
5
|
-
app = self.name.replace('src.','')
|
|
6
|
+
app = self.name.replace('src.', '')
|
|
6
7
|
call_command('makemigrations', app, interactive=False, verbosity=0)
|
|
7
8
|
call_command('migrate', app, interactive=False, verbosity=0)
|
|
8
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: valar
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: valar for morghulis
|
|
5
5
|
Home-page: https://gitee.com/GRIFFIN120/valar_dev
|
|
6
6
|
Author: LYP
|
|
@@ -27,12 +27,13 @@ Dynamic: requires-python
|
|
|
27
27
|
Dynamic: summary
|
|
28
28
|
|
|
29
29
|
valar for morghulis
|
|
30
|
+
|
|
30
31
|
# 1. install
|
|
32
|
+
|
|
31
33
|
```shell
|
|
32
34
|
pip install valar
|
|
33
35
|
```
|
|
34
36
|
|
|
35
|
-
|
|
36
37
|
# 1. settings
|
|
37
38
|
|
|
38
39
|
```python
|
|
@@ -47,16 +48,12 @@ BASE_APP = str(BASE_DIR.name)
|
|
|
47
48
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
|
48
49
|
SECRET_KEY = get_random_secret_key()
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
|
|
52
51
|
""" Valar Options """
|
|
53
52
|
|
|
54
53
|
HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
|
|
55
54
|
MONGO_URI = 'mongodb://root:19870120@121.41.111.175:27017/'
|
|
56
55
|
MINIO_URL = "s3://admin:password@120.27.8.186:9000"
|
|
57
56
|
|
|
58
|
-
|
|
59
|
-
|
|
60
57
|
""" Minimized compulsory settings """
|
|
61
58
|
|
|
62
59
|
DATABASES = {
|
|
@@ -69,7 +66,7 @@ INSTALLED_APPS = [
|
|
|
69
66
|
'django.contrib.sessions',
|
|
70
67
|
"corsheaders",
|
|
71
68
|
'channels',
|
|
72
|
-
'valar',
|
|
69
|
+
'valar.apps.ValarConfig',
|
|
73
70
|
]
|
|
74
71
|
MIDDLEWARE = [
|
|
75
72
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
|
@@ -99,6 +96,7 @@ FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
|
|
|
99
96
|
DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
|
|
100
97
|
|
|
101
98
|
```
|
|
99
|
+
|
|
102
100
|
# 2. asgi
|
|
103
101
|
|
|
104
102
|
```python
|
|
@@ -117,8 +115,8 @@ application = ProtocolTypeRouter({
|
|
|
117
115
|
```
|
|
118
116
|
|
|
119
117
|
# 3. migrate
|
|
120
|
-
no need, valar will auto migration
|
|
121
118
|
|
|
119
|
+
no need, valar will auto migration
|
|
122
120
|
|
|
123
121
|
# 4. root urls
|
|
124
122
|
|
|
@@ -126,7 +124,6 @@ no need, valar will auto set urlpatterns
|
|
|
126
124
|
|
|
127
125
|
# 5. how to use valar_channel
|
|
128
126
|
|
|
129
|
-
|
|
130
127
|
5.1 set HANDLER_MAPPING in settings
|
|
131
128
|
|
|
132
129
|
```python
|
|
@@ -137,13 +134,11 @@ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
|
|
|
137
134
|
|
|
138
135
|
```python
|
|
139
136
|
from valar.channels.sender import ValarSocketSender
|
|
137
|
+
|
|
138
|
+
|
|
140
139
|
def test_handler(sender: ValarSocketSender):
|
|
141
140
|
data = sender.data
|
|
142
|
-
|
|
143
|
-
counter = sender.create_counter(length)
|
|
144
|
-
for i in range(length):
|
|
145
|
-
# sync method
|
|
146
|
-
sender.to_clients(counter.tick() ,sender.client, wait=True)
|
|
141
|
+
sender.load(data)
|
|
147
142
|
```
|
|
148
143
|
|
|
149
144
|
5.3 register handler in channel_mapping
|
|
@@ -13,7 +13,7 @@ valar/classes/singleton_meta.py,sha256=aa9DZKG4Q9Cr67ZWrQ0yaFLrEjwFoTMQbDrpoIqgJ
|
|
|
13
13
|
valar/classes/valar_minio.py,sha256=20FpP7fbSuKG4cTF0-gmYUvHnPsVvwWOchfljb92o-8,2720
|
|
14
14
|
valar/classes/valar_response.py,sha256=nwOOjT1AeORkxAIRTrXMPa6-xtMZP7XaLJnHG-yfudA,252
|
|
15
15
|
valar/classes/app_mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
valar/classes/app_mixins/auto_migration_mixin.py,sha256=
|
|
16
|
+
valar/classes/app_mixins/auto_migration_mixin.py,sha256=Dkl1hgrQxoSjACSbBmodxt9C7RcxJ17CEUewpbeLyO4,338
|
|
17
17
|
valar/classes/app_mixins/auto_urlpatterns_mixin.py,sha256=FX-t-TJWawXyS2r6jbj_IrJBpzwMbWzIjyK6PsHL6XE,415
|
|
18
18
|
valar/dao/__init__.py,sha256=WGjXrnjmgcfOvtTYIVjtdsmh9mlc0IJCrZD2ScZ6Kx0,1335
|
|
19
19
|
valar/dao/abstract.py,sha256=2M5OLxze-uQDAJIgJtuGKoDjpwVw97Rg_wOeOq6gFTA,2318
|
|
@@ -40,8 +40,15 @@ valar/views/file.py,sha256=NxfbxT4EJRDFgXol06kD0vcSp4lN4BCVJ5wq43rh8Yg,1537
|
|
|
40
40
|
valar/views/handler.py,sha256=zlJoCnFnXK_2hyTXaNQrwj7svWQJk4ixIldCosIoCpY,1113
|
|
41
41
|
valar/views/meta.py,sha256=H3_raG-LEcfg1p_CBpluhPXBsLFQB_jtaI5CKGgYOKk,4774
|
|
42
42
|
valar/views/rest.py,sha256=HnmPR6_Q_NTtotaeDjfwIGwVG7eigtKBXfoaedUgar8,2349
|
|
43
|
-
valar-1.2.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
valar-1.2.1.dist-info/licenses/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
|
|
44
|
+
vtest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
+
vtest/apps.py,sha256=3mGJT4YxdqrzxQj0uR1KnzBRO3ilu5CJNKmXvahDP1g,583
|
|
46
|
+
vtest/handlers.py,sha256=VQ9Lv5_zvlPmRjV81mX8QTsncm4bOlSHadBcX33SfxE,404
|
|
47
|
+
vtest/models.py,sha256=2xf9qSVbjj8j8dbSp0vx4SHIBdQAGzbVfsyt7nxKTq4,2567
|
|
48
|
+
vtest/views.py,sha256=o0ElFeXGRkmvtpblitAtGQqhwjnu6NIGiIetLNxdauE,172
|
|
49
|
+
vtest/migrations/0001_initial.py,sha256=l4D-fKYjX8qht95iY5dDpFO6bsz7RQY2mbCWRdvhaGo,9434
|
|
50
|
+
vtest/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
+
valar-1.2.1.dist-info/METADATA,sha256=4CaoLHVsjIVyZH4Aq2Kb5wQVr4cJ5Jonpaf2K_oL-dw,3272
|
|
52
|
+
valar-1.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
53
|
+
valar-1.2.1.dist-info/top_level.txt,sha256=BM6TVgqVM6zSHp9lZmbN46veSedwX0ezelOKL8C6IT4,12
|
|
54
|
+
valar-1.2.1.dist-info/RECORD,,
|
vtest/__init__.py
ADDED
|
File without changes
|
vtest/apps.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from django.apps import AppConfig
|
|
3
|
+
from ..valar.classes.app_mixins.auto_migration_mixin import AutoMigrationMixin
|
|
4
|
+
from ..valar.classes.app_mixins.auto_urlpatterns_mixin import AutoUrlPatternsMixin
|
|
5
|
+
|
|
6
|
+
valar_app = __package__.replace('src.', '')
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class VTestConfig(AutoMigrationMixin, AppConfig):
|
|
10
|
+
default_auto_field = 'django.db.models.BigAutoField'
|
|
11
|
+
name = __package__
|
|
12
|
+
|
|
13
|
+
def ready(self):
|
|
14
|
+
if os.environ.get('RUN_MAIN') == 'true':
|
|
15
|
+
from ..valar.dao.frame import MetaFrame
|
|
16
|
+
getattr(super(), 'auto_migrate', None)()
|
|
17
|
+
MetaFrame()
|
vtest/handlers.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import time
|
|
2
|
+
|
|
3
|
+
from ..valar.channels.counter import Counter
|
|
4
|
+
from ..valar.channels.sender import ValarChannelSender
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def valar_test_handler(sender: ValarChannelSender):
|
|
8
|
+
data = sender.data
|
|
9
|
+
length = data.get('length', 100)
|
|
10
|
+
counter = Counter(length)
|
|
11
|
+
for i in range(length):
|
|
12
|
+
time.sleep(0.1)
|
|
13
|
+
tick = counter.tick()
|
|
14
|
+
tick.update({'name': 'test1'})
|
|
15
|
+
sender.load(tick)
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Generated by Django 4.2.23 on 2025-08-28 10:15
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
initial = True
|
|
10
|
+
|
|
11
|
+
dependencies = [
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
migrations.CreateModel(
|
|
16
|
+
name='Case',
|
|
17
|
+
fields=[
|
|
18
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
19
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
20
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
21
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
22
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
23
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
24
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
25
|
+
('a1', models.FloatField(default=0, verbose_name='余额')),
|
|
26
|
+
('a2', models.FloatField(default=0, verbose_name='已用信用额度')),
|
|
27
|
+
('a3', models.FloatField(default=0, verbose_name='年还款额')),
|
|
28
|
+
('a4', models.FloatField(default=0, verbose_name='年收入/年还款')),
|
|
29
|
+
('a5', models.FloatField(default=0, verbose_name='负债')),
|
|
30
|
+
('a6', models.FloatField(default=0, verbose_name='利率*期数')),
|
|
31
|
+
('a7', models.FloatField(default=0, verbose_name='分期付款/年收入')),
|
|
32
|
+
('a8', models.FloatField(default=0, verbose_name='贷款人均负债')),
|
|
33
|
+
('a9', models.FloatField(default=0, verbose_name='匿名特征加总')),
|
|
34
|
+
('a10', models.FloatField(default=0, verbose_name='有效不良记录数')),
|
|
35
|
+
],
|
|
36
|
+
options={
|
|
37
|
+
'abstract': False,
|
|
38
|
+
},
|
|
39
|
+
),
|
|
40
|
+
migrations.CreateModel(
|
|
41
|
+
name='Tree',
|
|
42
|
+
fields=[
|
|
43
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
44
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
45
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
46
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
47
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
48
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
49
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
50
|
+
('pid', models.IntegerField(default=0, verbose_name='父节点')),
|
|
51
|
+
('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
|
|
52
|
+
('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
|
|
53
|
+
('text', models.TextField(null=True, verbose_name='text')),
|
|
54
|
+
],
|
|
55
|
+
options={
|
|
56
|
+
'verbose_name': '树形测试',
|
|
57
|
+
},
|
|
58
|
+
),
|
|
59
|
+
migrations.CreateModel(
|
|
60
|
+
name='Vala',
|
|
61
|
+
fields=[
|
|
62
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
63
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
64
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
65
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
66
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
67
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
68
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
69
|
+
('text_field', models.TextField(null=True, verbose_name='text')),
|
|
70
|
+
('boolean_field', models.BooleanField(null=True, verbose_name='boolean')),
|
|
71
|
+
('integer_field', models.IntegerField(null=True, verbose_name='integer')),
|
|
72
|
+
('float_field', models.FloatField(null=True, verbose_name='float')),
|
|
73
|
+
('date_field', models.DateField(null=True, verbose_name='date')),
|
|
74
|
+
('datetime_field', models.DateTimeField(null=True, verbose_name='datetime')),
|
|
75
|
+
('time_field', models.TimeField(null=True, verbose_name='time')),
|
|
76
|
+
('json_field', models.JSONField(null=True, verbose_name='json')),
|
|
77
|
+
('file', models.FileField(null=True, upload_to='', verbose_name='File')),
|
|
78
|
+
],
|
|
79
|
+
options={
|
|
80
|
+
'abstract': False,
|
|
81
|
+
},
|
|
82
|
+
),
|
|
83
|
+
migrations.CreateModel(
|
|
84
|
+
name='O2O',
|
|
85
|
+
fields=[
|
|
86
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
87
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
88
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
89
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
90
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
91
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
92
|
+
('name', models.CharField(max_length=100, null=True, verbose_name='name')),
|
|
93
|
+
('vala', models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='vtest.vala', verbose_name='vala')),
|
|
94
|
+
],
|
|
95
|
+
options={
|
|
96
|
+
'abstract': False,
|
|
97
|
+
},
|
|
98
|
+
),
|
|
99
|
+
migrations.CreateModel(
|
|
100
|
+
name='M2O',
|
|
101
|
+
fields=[
|
|
102
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
103
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
104
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
105
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
106
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
107
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
108
|
+
('name', models.CharField(max_length=100, null=True, verbose_name='name')),
|
|
109
|
+
('vala', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='vtest.vala', verbose_name='vala')),
|
|
110
|
+
],
|
|
111
|
+
options={
|
|
112
|
+
'abstract': False,
|
|
113
|
+
},
|
|
114
|
+
),
|
|
115
|
+
migrations.CreateModel(
|
|
116
|
+
name='M2M',
|
|
117
|
+
fields=[
|
|
118
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
119
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
120
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
121
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
122
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
123
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
124
|
+
('pid', models.IntegerField(default=0, verbose_name='父节点')),
|
|
125
|
+
('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
|
|
126
|
+
('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
|
|
127
|
+
('name', models.CharField(max_length=100, null=True, verbose_name='name')),
|
|
128
|
+
('valas', models.ManyToManyField(to='vtest.vala', verbose_name='valas')),
|
|
129
|
+
],
|
|
130
|
+
options={
|
|
131
|
+
'abstract': False,
|
|
132
|
+
},
|
|
133
|
+
),
|
|
134
|
+
migrations.CreateModel(
|
|
135
|
+
name='Forcast',
|
|
136
|
+
fields=[
|
|
137
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
138
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
139
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
140
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
141
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
142
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
143
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
144
|
+
('type', models.CharField(max_length=100, verbose_name='类别')),
|
|
145
|
+
('test', models.FloatField(default=0, verbose_name='测试集')),
|
|
146
|
+
('train', models.FloatField(default=0, verbose_name='训练集')),
|
|
147
|
+
('varify', models.FloatField(default=0, verbose_name='验证集')),
|
|
148
|
+
('value', models.FloatField(default=0, verbose_name='预测结果')),
|
|
149
|
+
('case', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='vtest.case')),
|
|
150
|
+
],
|
|
151
|
+
options={
|
|
152
|
+
'abstract': False,
|
|
153
|
+
},
|
|
154
|
+
),
|
|
155
|
+
]
|
|
File without changes
|
vtest/models.py
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
from ..valar.models.core import VModel, VTree
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Case(VModel):
|
|
7
|
+
a1 = models.FloatField(default=0, verbose_name='余额')
|
|
8
|
+
a2 = models.FloatField(default=0, verbose_name='已用信用额度')
|
|
9
|
+
a3 = models.FloatField(default=0, verbose_name='年还款额')
|
|
10
|
+
a4 = models.FloatField(default=0, verbose_name='年收入/年还款')
|
|
11
|
+
a5 = models.FloatField(default=0, verbose_name='负债')
|
|
12
|
+
a6 = models.FloatField(default=0, verbose_name='利率*期数')
|
|
13
|
+
a7 = models.FloatField(default=0, verbose_name='分期付款/年收入')
|
|
14
|
+
a8 = models.FloatField(default=0, verbose_name='贷款人均负债')
|
|
15
|
+
a9 = models.FloatField(default=0, verbose_name='匿名特征加总')
|
|
16
|
+
a10 = models.FloatField(default=0, verbose_name='有效不良记录数')
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Forcast(VModel):
|
|
20
|
+
case = models.ForeignKey(Case, on_delete=models.CASCADE, null=True)
|
|
21
|
+
type = models.CharField(max_length=100, verbose_name='类别')
|
|
22
|
+
test = models.FloatField(default=0, verbose_name='测试集')
|
|
23
|
+
train = models.FloatField(default=0, verbose_name='训练集')
|
|
24
|
+
varify = models.FloatField(default=0, verbose_name='验证集')
|
|
25
|
+
value = models.FloatField(default=0, verbose_name='预测结果')
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class Vala(VModel):
|
|
29
|
+
text_field = models.TextField(null=True, verbose_name='text')
|
|
30
|
+
boolean_field = models.BooleanField(null=True, verbose_name='boolean')
|
|
31
|
+
integer_field = models.IntegerField(null=True, verbose_name='integer')
|
|
32
|
+
float_field = models.FloatField(null=True, verbose_name='float')
|
|
33
|
+
date_field = models.DateField(null=True, verbose_name='date')
|
|
34
|
+
datetime_field = models.DateTimeField(null=True, verbose_name='datetime')
|
|
35
|
+
time_field = models.TimeField(null=True, verbose_name='time')
|
|
36
|
+
json_field = models.JSONField(null=True, verbose_name='json')
|
|
37
|
+
file = models.FileField(null=True, verbose_name='File')
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class M2O(VModel):
|
|
41
|
+
vala = models.ForeignKey(to=Vala, null=True, on_delete=models.CASCADE, verbose_name='vala')
|
|
42
|
+
name = models.CharField(max_length=100, null=True, verbose_name='name')
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class O2O(VModel):
|
|
46
|
+
vala = models.OneToOneField(to=Vala, null=True, on_delete=models.CASCADE, verbose_name='vala')
|
|
47
|
+
name = models.CharField(max_length=100, null=True, verbose_name='name')
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class M2M(VTree):
|
|
51
|
+
valas = models.ManyToManyField(to=Vala, verbose_name='valas')
|
|
52
|
+
name = models.CharField(max_length=100, null=True, verbose_name='name')
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class Tree(VTree):
|
|
56
|
+
text = models.TextField(null=True, verbose_name='text')
|
|
57
|
+
|
|
58
|
+
class Meta:
|
|
59
|
+
verbose_name = '树形测试'
|
vtest/views.py
ADDED
|
File without changes
|
|
File without changes
|