1
1
from django .db import models
2
2
from django .utils import timezone
3
- from django_mysql .models import ListCharField
3
+ from django_mysql .models import JSONField
4
4
5
5
6
- class Crawler (models .Model ):
6
+ class Statistics (models .Model ):
7
+
7
8
9
+ JSON_FIELDS = (
10
+ 'globalStatistics' , 'domesticStatistics' , 'internationalStatistics' ,
11
+ 'remarks' , 'notes' , 'WHOArticle' , 'recommends' , 'timelines' ,
12
+ 'wikis' , 'goodsGuides' , 'rumors'
13
+ )
14
+
15
+ globalStatistics = models .TextField (default = '{}' )
16
+ domesticStatistics = models .TextField (default = '{}' )
17
+ internationalStatistics = models .TextField (default = '{}' )
18
+ remarks = models .TextField (default = '[]' )
19
+ notes = models .TextField (default = '[]' )
20
+ generalRemark = models .TextField (default = '' )
21
+ WHOArticle = models .TextField (verbose_name = 'WHO 文章' , default = '{}' )
22
+ recommends = models .TextField (verbose_name = '防护知识' , default = '[]' )
23
+ timelines = models .TextField (verbose_name = '时间线事件' , default = '[]' )
24
+ wikis = models .TextField (verbose_name = 'Wiki' , default = '[]' )
25
+ goodsGuides = models .TextField (verbose_name = '购物指南' , default = '[]' )
26
+ rumors = models .TextField (verbose_name = '辟谣与防护' , default = '[]' )
8
27
modifyTime = models .DateTimeField (null = True )
9
28
createTime = models .DateTimeField (null = True )
10
29
crawlTime = models .DateTimeField (
11
30
"抓取时间" , default = timezone .now , editable = False )
12
31
13
- class Meta :
14
- verbose_name = "抓取版本"
15
- verbose_name_plural = "抓取版本"
16
-
17
-
18
- class Statistics (models .Model ):
19
-
20
- GLOBAL = 0
21
- DOMESTIC = 1
22
- INTERNATIONAL = 2
23
- COUNTRY_TYPES = (
24
- (GLOBAL , '全球' ),
25
- (DOMESTIC , '国内' ),
26
- (INTERNATIONAL , '国外' )
27
- )
28
-
29
- countryType = models .IntegerField (choices = COUNTRY_TYPES )
30
- currentConfirmedCount = models .IntegerField (default = 0 )
31
- confirmedCount = models .IntegerField (default = 0 )
32
- suspectedCount = models .IntegerField (default = 0 )
33
- seriousCount = models .IntegerField ('现存无症状' , default = 0 )
34
- curedCount = models .IntegerField (default = 0 )
35
- deadCount = models .IntegerField (default = 0 )
36
- currentConfirmedIncr = models .IntegerField (default = 0 )
37
- confirmedIncr = models .IntegerField (default = 0 )
38
- suspectedIncr = models .IntegerField (default = 0 )
39
- curedIncr = models .IntegerField (default = 0 )
40
- deadIncr = models .IntegerField (default = 0 )
41
- crawler = models .ForeignKey (
42
- "Crawler" , on_delete = models .CASCADE , related_name = "statistics" ,
43
- db_column = "crawlerId"
44
- )
45
-
46
32
class Meta :
47
33
verbose_name = '统计数据'
48
34
verbose_name_plural = '统计数据'
49
35
50
36
51
- class Notice (models .Model ):
52
-
53
- remarks = ListCharField (
54
- models .CharField (max_length = 100 ), size = 10 , max_length = 100 * 11 )
55
- notes = ListCharField (
56
- models .CharField (max_length = 100 ), size = 10 , max_length = 100 * 11 )
57
- generalRemark = models .TextField (null = True )
58
- crawler = models .ForeignKey (
59
- "Crawler" , on_delete = models .CASCADE , related_name = "notices" ,
60
- db_column = "crawlerId"
61
- )
62
-
63
- class Meta :
64
- verbose_name = '注意信息'
65
- verbose_name_plural = '注意信息'
66
-
67
-
68
- class WHOArticle (models .Model ):
69
-
70
- title = models .CharField (max_length = 100 )
71
- linkUrl = models .URLField (max_length = 200 )
72
- imgUrl = models .URLField (max_length = 200 )
73
- crawler = models .OneToOneField (
74
- "Crawler" , on_delete = models .CASCADE , related_name = "WHO_article" ,
75
- db_column = "crawlerId"
76
- )
77
-
78
- class Meta :
79
- verbose_name = 'WHO 文章'
80
- verbose_name_plural = 'WHO 文章'
81
-
82
-
83
- class Recommend (models .Model ):
84
-
85
- CONTENT_TYPES = [
86
- (1 , '我要出行' ),
87
- (2 , '家有小孩' ),
88
- (3 , '未知' ),
89
- (4 , '我宅在家' ),
90
- (5 , '未知' ),
91
- (6 , '未知' ),
92
- (7 , '未知' )
93
- ]
94
- GLOBAL = 0
95
- DOMESTIC = 1
96
- INTERNATIONAL = 2
97
- COUNTRY_TYPES = (
98
- (GLOBAL , '全球' ),
99
- (DOMESTIC , '国内' ),
100
- (INTERNATIONAL , '国外' )
101
- )
102
-
103
- title = models .CharField (max_length = 100 )
104
- linkUrl = models .URLField (max_length = 200 )
105
- imgUrl = models .URLField (max_length = 200 )
106
- contentType = models .IntegerField (choices = CONTENT_TYPES )
107
- recordStatus = models .IntegerField ()
108
- countryType = models .IntegerField (choices = COUNTRY_TYPES )
109
- sort = models .IntegerField ()
110
- crawler = models .ForeignKey (
111
- "Crawler" , on_delete = models .CASCADE , related_name = "recommends" ,
112
- db_column = "crawlerId"
113
- )
114
-
115
- class Meta :
116
- verbose_name = '防护知识'
117
- verbose_name_plural = '防护知识'
118
-
119
-
120
- class Timeline (models .Model ):
121
-
122
- pubDate = models .IntegerField ()
123
- pubDateStr = models .CharField (max_length = 50 )
124
- title = models .CharField (max_length = 100 )
125
- summary = models .TextField ()
126
- infoSource = models .CharField (max_length = 50 )
127
- sourceUrl = models .URLField (max_length = 200 )
128
- crawler = models .ForeignKey (
129
- "Crawler" , on_delete = models .CASCADE , related_name = "timelines" ,
130
- db_column = "crawlerId"
131
- )
132
-
133
- class Meta :
134
- verbose_name = '时间线事件'
135
- verbose_name_plural = '时间线事件'
136
-
137
-
138
- class Wiki (models .Model ):
139
-
140
- title = models .CharField (max_length = 100 )
141
- linkUrl = models .URLField (max_length = 200 )
142
- imgUrl = models .URLField (max_length = 200 )
143
- description = models .TextField ()
144
- crawler = models .ForeignKey (
145
- "Crawler" , on_delete = models .CASCADE , related_name = "wikis" ,
146
- db_column = "crawlerId"
147
- )
148
-
149
- class Meta :
150
- verbose_name = 'Wiki'
151
- verbose_name_plural = 'Wiki'
152
-
153
-
154
- class GoodsGuide (models .Model ):
155
-
156
- title = models .CharField (max_length = 100 )
157
- categoryName = models .CharField (max_length = 50 )
158
- recordStatus = models .IntegerField ()
159
- contentImgUrls = ListCharField (
160
- models .CharField (max_length = 100 ), size = 10 , max_length = 100 * 11 )
161
- crawler = models .ForeignKey (
162
- "Crawler" , on_delete = models .CASCADE , related_name = "goods_guides" ,
163
- db_column = "crawlerId"
164
- )
165
-
166
- class Meta :
167
- verbose_name = '购物指南'
168
- verbose_name_plural = '购物指南'
169
-
170
-
171
- class Rumor (models .Model ):
172
-
173
- title = models .CharField (max_length = 100 )
174
- mainSummary = models .TextField ()
175
- summary = models .TextField ()
176
- body = models .TextField ()
177
- sourceUrl = models .URLField (max_length = 200 )
178
- score = models .IntegerField ()
179
- rumorType = models .IntegerField ()
180
- crawler = models .ForeignKey (
181
- "Crawler" , on_delete = models .CASCADE , related_name = "rumors" ,
182
- db_column = "crawlerId"
183
- )
184
-
185
- class Meta :
186
- verbose_name = '辟谣与防护'
187
- verbose_name_plural = '辟谣与防护'
188
-
189
-
190
37
class Province (models .Model ):
191
38
192
39
locationId = models .IntegerField ()
@@ -204,10 +51,6 @@ class Province(models.Model):
204
51
'创建时间' , auto_now_add = True , editable = False )
205
52
updated = models .DateTimeField (
206
53
'更新时间' , auto_now = True , editable = False )
207
- crawler = models .ForeignKey (
208
- "Crawler" , on_delete = models .CASCADE , related_name = "provinces" ,
209
- db_column = "crawlerId"
210
- )
211
54
212
55
class Meta :
213
56
verbose_name = '国内省份'
@@ -231,9 +74,6 @@ class City(models.Model):
231
74
"Province" , on_delete = models .CASCADE , related_name = "cities" ,
232
75
db_column = "provinceId"
233
76
)
234
- crawler = models .ForeignKey (
235
- "Crawler" , on_delete = models .CASCADE , db_column = "crawlerId"
236
- )
237
77
238
78
@property
239
79
def provinceName (self ):
@@ -273,10 +113,6 @@ class Country(models.Model):
273
113
'创建时间' , auto_now_add = True , editable = False )
274
114
updated = models .DateTimeField (
275
115
'更新时间' , auto_now = True , editable = False )
276
- crawler = models .ForeignKey (
277
- "Crawler" , on_delete = models .CASCADE , related_name = "countries" ,
278
- db_column = "countryId"
279
- )
280
116
281
117
class Meta :
282
118
verbose_name = "国家地区"
0 commit comments