admin.py 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. from django.contrib import admin
  2. from django.contrib.auth.admin import UserAdmin # 从django继承过来后进行定制
  3. from django.utils.translation import ugettext_lazy as _
  4. from django.contrib.auth.forms import UserCreationForm, UserChangeForm
  5. # Register your models here.
  6. from apps.AppInfo.models import MyUser, QXZdata, QXZstatus, Equip, Equip_type, QXZdata_New, JKdata, Article, Video_data,Product,Blog,QXZstatus_New,QXZswitchstatus,QXZswitchdata,\
  7. CKArticle,GardenManage,GardenArea,Areacrop,Store_Manage,Hotel_Info,Hotel_Photo,FarmUser,FarmList,Pick_Pub,Sell_Manage,Person_Pick,QXZAutoswitch, Pic_Info,Sightsee_Info,QXZ_Alarm_Log,\
  8. Experts
  9. # custom user admin
  10. class MyUserCreationForm(UserCreationForm): # 增加用户表单重新定义,继承自UserCreationForm
  11. def __init__(self, *args, **kwargs):
  12. super(MyUserCreationForm, self).__init__(*args, **kwargs)
  13. # 必填项:
  14. self.fields['email'].required = True # 为了让此字段在admin中为必选项,自定义一个form
  15. # self.fields['user_remark'].required = True # 其实这个name字段可以不用设定required,因为在models中的MyUser类中已经设定了blank=False,但email字段在系统自带User的models中已经设定为
  16. #self.fields['user_phone'].required = True
  17. # email = models.EmailField(_('email address'), blank=True),除非直接改源码的django(不建议这么做),不然还是自定义一个表单做一下继承吧。
  18. class MyUserChangeForm(UserChangeForm): # 编辑用户表单重新定义,继承自UserChangeForm
  19. def __init__(self, *args, **kwargs):
  20. super(MyUserChangeForm, self).__init__(*args, **kwargs)
  21. self.fields['email'].required = True
  22. class CustomUserAdmin(UserAdmin):
  23. def __init__(self, *args, **kwargs):
  24. super(CustomUserAdmin, self).__init__(*args, **kwargs)
  25. self.list_display = (
  26. 'username', 'user_remark',
  27. 'user_phone',
  28. 'user_picture', 'user_pro',
  29. 'user_city', 'user_area',
  30. 'email', 'is_active',
  31. 'is_staff', 'is_superuser','limit'
  32. )
  33. self.search_fields = ('username', 'email', 'user_phone')
  34. self.form = MyUserChangeForm # 编辑用户表单,使用自定义的表单
  35. self.add_form = MyUserCreationForm # 添加用户表单,使用自定义的表单
  36. # 以上的属性都可以在django源码的UserAdmin类中找到,我们做以覆盖
  37. # 这个方法在源码的admin/options.py文件的ModelAdmin这个类中定义,我们要重新定义它,以达到不同权限的用户,返回的表单内容不同
  38. def changelist_view(self, request, extra_context=None):
  39. # 非super用户不能设定编辑是否为super用户:
  40. if not request.user.is_superuser:
  41. self.fieldsets = ((None, {'fields': ('username', 'password',)}),
  42. # 个人信息栏:_ 将('')里的内容国际化,这样可以让admin里的文字自动随着LANGUAGE_CODE切换中英文、
  43. (_('Personal info'), {'fields': (
  44. 'user_remark', 'user_phone', 'user_picture', 'user_pro', 'user_city', 'user_area', 'email')}),
  45. # 权限栏:
  46. (_('Permissions'), {
  47. 'fields': ('is_active', 'is_staff', 'groups','limit')}),
  48. # 重要日期栏:
  49. (_('Important dates'), {
  50. 'fields': ('last_login', 'date_joined')}),
  51. ) # 这里('Permissions')中没有'is_superuser',此字段定义UserChangeForm表单中的具体显示内容,并可以分类显示
  52. # 非超级用户创建用户:
  53. self.add_fieldsets = ((None, {'classes': ('wide',),
  54. 'fields': ('username', 'password1', 'password2', 'email', 'user_remark', 'user_phone', 'user_picture', 'user_pro', 'user_city', 'user_area', 'is_active',
  55. 'is_staff', 'groups','limit'),
  56. }),
  57. ) # 此字段定义UserCreationForm表单中的具体显示内容
  58. # super账户可以做任何事
  59. else:
  60. self.fieldsets = ((None, {'fields': ('username', 'password',)}),
  61. # 个人信息栏:
  62. (_('Personal info'), {'fields': (
  63. 'user_remark', 'user_phone', 'user_picture', 'user_pro', 'user_city', 'user_area', 'email')}),
  64. # 权限栏:
  65. (_('Permissions'), {
  66. 'fields': ('is_active', 'is_staff', 'is_superuser','groups','limit')}),
  67. # 重要日期栏:
  68. (_('Important dates'), {
  69. 'fields': ('last_login', 'date_joined')}),
  70. )
  71. # 超级用户创建用户:
  72. self.add_fieldsets = ((None,
  73. {'classes': ('wide',),
  74. 'fields': ('username', 'password1',
  75. 'password2', 'email',
  76. 'user_remark',
  77. 'user_phone', 'user_picture',
  78. 'user_pro', 'user_city',
  79. 'user_area', 'is_active',
  80. 'is_staff', 'is_superuser',
  81. 'groups','limit'
  82. ),
  83. }),
  84. )
  85. return super(CustomUserAdmin, self).changelist_view(request, extra_context)
  86. # 设置每页显示记录数:
  87. list_per_page = 10
  88. admin.site.register(MyUser, CustomUserAdmin)
  89. @admin.register(Equip)
  90. class EquipAdmin(admin.ModelAdmin):
  91. actions_on_bottom = False
  92. actions_on_top = True
  93. # 放大镜图标:
  94. #raw_id_fields = ('equip_type',)
  95. list_display = [
  96. 'equip_id',
  97. 'equip_type',
  98. 'equip_name',
  99. 'equip_add_time',
  100. 'equip_user',
  101. 'equip_location',
  102. 'equip_desc',
  103. 'lng',
  104. 'lat',
  105. ]
  106. list_filter = (
  107. 'equip_add_time',
  108. 'equip_type'
  109. )
  110. search_fields = [
  111. 'equip_id',
  112. 'equip_name'
  113. ]
  114. # 设置点击哪些字段可以进入修改页面:
  115. list_display_links = (
  116. 'equip_id',
  117. 'equip_user'
  118. )
  119. # 设置每页显示记录数:
  120. list_per_page = 10
  121. EquipAdmin.short_description = u'设备'
  122. # 定制模型设备类型Equip_type的 Admin 后台
  123. class Equip_typeAdmin(admin.ModelAdmin):
  124. list_display = [
  125. 'type_id',
  126. 'type_name',
  127. 'type_add_time',
  128. 'topic_name'
  129. ]
  130. # 设置每页显示记录数:
  131. list_per_page = 10
  132. admin.site.register(Equip_type, Equip_typeAdmin)
  133. # 气象站数据QXZstatus模型注册和装饰:
  134. @admin.register(QXZstatus)
  135. class QXZstatusAdmin(admin.ModelAdmin):
  136. actions_on_bottom = False
  137. actions_on_top = True
  138. # 详情显示项:
  139. fields = [
  140. 'equip_id',
  141. 'qxz_status',
  142. 'qxz_picture'
  143. ]
  144. # 列表显示项:
  145. list_display = [
  146. 'equip_id',
  147. 'qxz_status',
  148. 'qxz_picture',
  149. 'upl_time'
  150. ]
  151. # 筛选过滤项:
  152. list_filter = ('equip_id',)
  153. # 点击进入详情修改项:
  154. list_display_links = ('equip_id',)
  155. # 链接:无
  156. # list_display_links = None
  157. # 搜索项:
  158. search_fields = ['equip_id__equip_id']
  159. # 设置显示外键字段:
  160. fk_fields = ('equip_id',)
  161. # 在admin后台类中加入raw_id_fields(只适用于外键)后,会显示外键的详细信息
  162. raw_id_fields = ("equip_id",)
  163. # 设置每页显示记录数:
  164. list_per_page = 10
  165. # 气象站数据QXZdata模型注册和装饰:
  166. @admin.register(QXZdata)
  167. class QXZdataAdmin(admin.ModelAdmin):
  168. actions_on_bottom = False
  169. actions_on_top = True
  170. # 详情显示项:
  171. fields = [
  172. 'equip_id',
  173. 'upl_time',
  174. 'qxz_data',
  175. ]
  176. # 列表显示项:
  177. list_display = [
  178. 'equip_id',
  179. 'upl_time',
  180. 'qxz_data',
  181. ]
  182. # 筛选过滤项:
  183. list_filter = ('upl_time',)
  184. # 搜索项:
  185. search_fields = ['equip_id__equip_id']
  186. # 设置每页显示记录数:
  187. list_per_page = 10
  188. # 气象站数据QXZdata_New模型注册和装饰:
  189. @admin.register(QXZdata_New)
  190. class QXZdata_NewAdmin(admin.ModelAdmin):
  191. actions_on_bottom = False
  192. actions_on_top = True
  193. # 详情显示项:
  194. fields = [
  195. 'equip_id',
  196. 'upl_time',
  197. 'e1',
  198. 'e2',
  199. 'e3',
  200. 'e4',
  201. 'e5',
  202. 'e6',
  203. 'e7',
  204. 'e8',
  205. 'e9',
  206. 'e10',
  207. 'e11',
  208. 'e12',
  209. 'e13',
  210. 'e14',
  211. ]
  212. # 列表显示项:
  213. list_display = [
  214. 'equip_id',
  215. 'upl_time',
  216. 'e1',
  217. 'e2',
  218. 'e3',
  219. 'e4',
  220. 'e5',
  221. 'e6',
  222. 'e7',
  223. 'e8',
  224. 'e9',
  225. 'e10',
  226. 'e11',
  227. 'e12',
  228. 'e13',
  229. 'e14',
  230. ]
  231. # 筛选过滤项:
  232. list_filter = ('upl_time',)
  233. # 搜索项:
  234. search_fields = ['equip_id__equip_id']
  235. # 设置每页显示记录数:
  236. list_per_page = 10
  237. # 气象站数据QXZdata_New模型注册和装饰:
  238. @admin.register(QXZstatus_New)
  239. class QXZstatus_NewAdmin(admin.ModelAdmin):
  240. actions_on_bottom = False
  241. actions_on_top = True
  242. # 详情显示项:
  243. fields = [
  244. 'equip_id',
  245. 'upl_time',
  246. 'e1',
  247. 'e2',
  248. 'e3',
  249. 'e4',
  250. 'e5',
  251. 'e6',
  252. 'e7',
  253. 'e8',
  254. 'e9',
  255. 'e10',
  256. 'e11',
  257. 'e12',
  258. 'e13',
  259. 'e14',
  260. 'interval',
  261. ]
  262. # 列表显示项:
  263. list_display = [
  264. 'equip_id',
  265. 'upl_time',
  266. 'e1',
  267. 'e2',
  268. 'e3',
  269. 'e4',
  270. 'e5',
  271. 'e6',
  272. 'e7',
  273. 'e8',
  274. 'e9',
  275. 'e10',
  276. 'e11',
  277. 'e12',
  278. 'e13',
  279. 'e14',
  280. 'interval',
  281. ]
  282. # 筛选过滤项:
  283. list_filter = ('upl_time',)
  284. # 搜索项:
  285. search_fields = ['equip_id__equip_id']
  286. # 设置每页显示记录数:
  287. list_per_page = 10
  288. # 监控设备数据JKdata模型注册和装饰:
  289. @admin.register(JKdata)
  290. class JKdataAdmin(admin.ModelAdmin):
  291. actions_on_bottom = False
  292. actions_on_top = True
  293. # 详情显示项:
  294. fields = [
  295. 'equip_id',
  296. 'upl_time',
  297. 'jk_token',
  298. 'jk_type',
  299. ]
  300. # 列表显示项:
  301. list_display = [
  302. 'equip_id',
  303. 'upl_time',
  304. 'jk_token',
  305. 'jk_type',
  306. ]
  307. # 筛选过滤项:
  308. list_filter = ('upl_time',)
  309. # 搜索项:
  310. search_fields = ['equip_id__equip_id']
  311. # 设置每页显示记录数:
  312. list_per_page = 10
  313. # 新闻表
  314. @admin.register(Article)
  315. class ArticleAdmin(admin.ModelAdmin):
  316. actions_on_bottom = False
  317. actions_on_top = True
  318. # 详情显示项:
  319. fields = [
  320. # 'id',
  321. 'title',
  322. 'intro',
  323. 'head_img',
  324. 'content',
  325. 'author',
  326. 'publish_date',
  327. 'hidden',
  328. 'priority'
  329. ]
  330. # 列表显示项:
  331. list_display = [
  332. # 'id',
  333. 'title',
  334. 'intro',
  335. 'head_img',
  336. 'content',
  337. 'author',
  338. 'publish_date',
  339. 'hidden',
  340. 'priority'
  341. ]
  342. # 筛选过滤项:
  343. list_filter = ('title',)
  344. # 搜索项:
  345. search_fields = ['title']
  346. # 设置每页显示记录数:
  347. list_per_page = 10
  348. # 视频信息表
  349. @admin.register(Video_data)
  350. class Video_dataAdmin(admin.ModelAdmin):
  351. actions_on_bottom = False
  352. actions_on_top = True
  353. # 详情显示项:
  354. fields = [
  355. # 'id',
  356. 'title',
  357. 'intro',
  358. 'video_url',
  359. 'video_img',
  360. 'author',
  361. 'publish_date',
  362. 'hidden',
  363. 'priority'
  364. ]
  365. # 列表显示项:
  366. list_display = [
  367. # 'id',
  368. 'title',
  369. 'intro',
  370. 'video_url',
  371. 'video_img',
  372. 'author',
  373. 'publish_date',
  374. 'hidden',
  375. 'priority'
  376. ]
  377. # 筛选过滤项:
  378. list_filter = ('title',)
  379. # 搜索项:
  380. search_fields = ['title']
  381. # 设置每页显示记录数:
  382. list_per_page = 10
  383. # 产品信息表
  384. @admin.register(Product)
  385. class ProductAdmin(admin.ModelAdmin):
  386. actions_on_bottom = False
  387. actions_on_top = True
  388. # 详情显示项:
  389. fields = [
  390. # 'id',
  391. 'title',
  392. 'intro',
  393. 'content',
  394. 'mobile',
  395. 'head_img',
  396. 'author',
  397. 'publish_date',
  398. 'hidden',
  399. 'priority'
  400. ]
  401. # 列表显示项:
  402. list_display = [
  403. # 'id',
  404. 'title',
  405. 'intro',
  406. 'content',
  407. 'mobile',
  408. 'head_img',
  409. 'author',
  410. 'publish_date',
  411. 'hidden',
  412. 'priority'
  413. ]
  414. # 筛选过滤项:
  415. list_filter = ('title',)
  416. # 搜索项:
  417. search_fields = ['title']
  418. # 设置每页显示记录数:
  419. list_per_page = 10
  420. #注册该模型
  421. @admin.register(Blog)
  422. class BlogAdmin(admin.ModelAdmin):
  423. # 列表页面显示字段
  424. list_display = ['title', 'body']
  425. # 气象站开关表QXZswitchstatus模型注册和装饰:
  426. @admin.register(QXZswitchstatus)
  427. class QXZswitchstatusAdmin(admin.ModelAdmin):
  428. actions_on_bottom = False
  429. actions_on_top = True
  430. # 详情显示项:
  431. fields = [
  432. 'equip_id',
  433. 'upl_time',
  434. 'qxz_switch',
  435. ]
  436. # 列表显示项:
  437. list_display = [
  438. 'equip_id',
  439. 'upl_time',
  440. 'qxz_switch',
  441. ]
  442. # 筛选过滤项:
  443. list_filter = ('upl_time',)
  444. # 搜索项:
  445. search_fields = ['equip_id__equip_id']
  446. # 设置每页显示记录数:
  447. list_per_page = 10
  448. # 气象站开关表QXZswitchdata模型注册和装饰:
  449. @admin.register(QXZswitchdata)
  450. class QXZswitchdataAdmin(admin.ModelAdmin):
  451. actions_on_bottom = False
  452. actions_on_top = True
  453. # 详情显示项:
  454. fields = [
  455. 'equip_id',
  456. 'upl_time',
  457. 'qxz_switch_data',
  458. ]
  459. # 列表显示项:
  460. list_display = [
  461. 'equip_id',
  462. 'upl_time',
  463. 'qxz_switch_data',
  464. ]
  465. # 筛选过滤项:
  466. list_filter = ('upl_time',)
  467. # 搜索项:
  468. search_fields = ['equip_id__equip_id']
  469. # 设置每页显示记录数:
  470. list_per_page = 10
  471. #注册该模型
  472. @admin.register(CKArticle)
  473. class CKArticleAdmin(admin.ModelAdmin):
  474. # 列表页面显示字段
  475. list_display = ['title','art_type','author','writer','intro','head_img','video_url','content','hidden','upl_time']
  476. # 搜索项:
  477. search_fields = ['title']
  478. # # 园区人员表
  479. # @admin.register(GardenUser)
  480. # class GardenUserAdmin(admin.ModelAdmin):
  481. # # 列表页面显示字段
  482. # list_display = ['username','mobile','gender']
  483. # # 搜索项:
  484. # search_fields = ['username']
  485. # 园区管理表
  486. @admin.register(GardenManage)
  487. class GardenManageAdmin(admin.ModelAdmin):
  488. # 列表页面显示字段
  489. list_display = ['name','addr','area','crop']
  490. # 搜索项:
  491. search_fields = ['name']
  492. # 地块表
  493. @admin.register(GardenArea)
  494. class GardenAreaAdmin(admin.ModelAdmin):
  495. # 列表页面显示字段
  496. list_display = ['name','user','garden','manage','location','addr','area','mobile','img','desc','upl_time']
  497. # 搜索项:
  498. search_fields = ['name']
  499. # 区域种植统计
  500. @admin.register(Areacrop)
  501. class AreacropAdmin(admin.ModelAdmin):
  502. # 列表页面显示字段
  503. list_display = ['cropname','area','crop_count','upl_time']
  504. # 搜索项:
  505. search_fields = ['cropname']
  506. # 销售管理
  507. @admin.register(Sell_Manage)
  508. class SellManageAdmin(admin.ModelAdmin):
  509. # 列表页面显示字段
  510. list_display = ['farm','name','num','money','upl_time']
  511. # 搜索项:
  512. search_fields = ['name']
  513. # 销售管理
  514. @admin.register(Person_Pick)
  515. class PersonPickAdmin(admin.ModelAdmin):
  516. # 列表页面显示字段
  517. list_display = ['farm','name','var','num','upl_time']
  518. # 搜索项:
  519. search_fields = ['name']
  520. # 库存管理
  521. @admin.register(Store_Manage)
  522. class StoreManageAdmin(admin.ModelAdmin):
  523. # 列表页面显示字段
  524. list_display = ['name','rtype','spec','rese','graden','upl_time']
  525. # 搜索项:
  526. search_fields = ['name']
  527. # 民宿表
  528. @admin.register(Hotel_Info)
  529. class HotelInfoAdmin(admin.ModelAdmin):
  530. # 列表页面显示字段
  531. list_display = ['name','price','intro','addr','location','person','hotel_img','hotel_tel','upl_time','author','content']
  532. # 搜索项:
  533. search_fields = ['name']
  534. # 民宿照片表
  535. @admin.register(Hotel_Photo)
  536. class HotelPhotoAdmin(admin.ModelAdmin):
  537. # 列表页面显示字段
  538. list_display = ['hotel','upl_time','addr']
  539. # 搜索项:
  540. search_fields = ['addr']
  541. # 农场管理者
  542. @admin.register(FarmUser)
  543. class FarmUserAdmin(admin.ModelAdmin):
  544. # 列表页面显示字段
  545. list_display = ['name','gender','mobile','upl_time']
  546. # 搜索项:
  547. search_fields = ['name']
  548. # 民宿照片表
  549. @admin.register(FarmList)
  550. class FarmListAdmin(admin.ModelAdmin):
  551. # 列表页面显示字段
  552. list_display = ['name','user','manage_user','garden','area','curr_var','farm_img','upl_time']
  553. # 搜索项:
  554. search_fields = ['name']
  555. # 采摘发布
  556. @admin.register(Pick_Pub)
  557. class Pick_PubAdmin(admin.ModelAdmin):
  558. # 列表页面显示字段
  559. list_display = ['farm','name','company','pick_img','upl_time','content','hidden']
  560. # 搜索项:
  561. search_fields = ['name']
  562. # 气象站阈值表QXZAutoswitch模型注册和装饰:
  563. @admin.register(QXZAutoswitch)
  564. class QXZAutoswitchAdmin(admin.ModelAdmin):
  565. actions_on_bottom = False
  566. actions_on_top = True
  567. # 详情显示项:
  568. fields = [
  569. 'equip_id',
  570. 'upl_time',
  571. 'qxz_auto',
  572. ]
  573. # 列表显示项:
  574. list_display = [
  575. 'equip_id',
  576. 'upl_time',
  577. 'qxz_auto',
  578. ]
  579. # 筛选过滤项:
  580. list_filter = ('upl_time',)
  581. # 搜索项:
  582. search_fields = ['equip_id__equip_id']
  583. # 设置每页显示记录数:
  584. list_per_page = 10
  585. # 气象站阈值表QXZAutoswitch模型注册和装饰:
  586. @admin.register(Pic_Info)
  587. class Pic_InfoAdmin(admin.ModelAdmin):
  588. actions_on_bottom = False
  589. actions_on_top = True
  590. # 详情显示项:
  591. fields = [
  592. 'pic_user',
  593. 'locat1',
  594. 'locat2',
  595. 'pic_center',
  596. 'addr',
  597. 'locat_info',
  598. 'upl_time',
  599. ]
  600. # 列表显示项:
  601. list_display = [
  602. 'pic_user',
  603. 'locat1',
  604. 'locat2',
  605. 'pic_center',
  606. 'addr',
  607. 'locat_info',
  608. 'upl_time',
  609. ]
  610. # 筛选过滤项:
  611. list_filter = ('upl_time',)
  612. # 搜索项:
  613. search_fields = ['addr']
  614. # 设置每页显示记录数:
  615. list_per_page = 10
  616. # 景点
  617. @admin.register(Sightsee_Info)
  618. class Sightsee_InfoAdmin(admin.ModelAdmin):
  619. actions_on_bottom = False
  620. actions_on_top = True
  621. # 详情显示项:
  622. fields = [
  623. 'name',
  624. 'price',
  625. 'desc',
  626. 'location',
  627. 'addr',
  628. 'sightsee_stime',
  629. 'sightsee_etime',
  630. 'sightsee_img',
  631. 'sightsee_tel',
  632. 'guide_img',
  633. 'hidden',
  634. 'author',
  635. 'content',
  636. ]
  637. # 列表显示项:
  638. list_display = [
  639. 'name',
  640. 'price',
  641. 'desc',
  642. 'location',
  643. 'addr',
  644. 'sightsee_stime',
  645. 'sightsee_etime',
  646. 'sightsee_img',
  647. 'sightsee_tel',
  648. 'guide_img',
  649. 'hidden',
  650. 'author',
  651. 'content',
  652. ]
  653. # 筛选过滤项:
  654. list_filter = ('upl_time',)
  655. # 搜索项:
  656. search_fields = ['addr']
  657. # 设置每页显示记录数:
  658. list_per_page = 10
  659. # 气象站阈值表QXZAutoswitch模型注册和装饰:
  660. @admin.register(QXZ_Alarm_Log)
  661. class QXZ_Alarm_LogAdmin(admin.ModelAdmin):
  662. actions_on_bottom = False
  663. actions_on_top = True
  664. # 详情显示项:
  665. fields = [
  666. 'equip_id',
  667. 'logs',
  668. 'ekey',
  669. 'upl_time',
  670. ]
  671. # 列表显示项:
  672. list_display = [
  673. 'equip_id',
  674. 'logs',
  675. 'ekey',
  676. 'upl_time',
  677. ]
  678. # 筛选过滤项:
  679. list_filter = ('upl_time',)
  680. # 搜索项:
  681. search_fields = ['addr']
  682. # 设置每页显示记录数:
  683. list_per_page = 10
  684. # 专家表
  685. @admin.register(Experts)
  686. class ExpertsAdmin(admin.ModelAdmin):
  687. actions_on_bottom = False
  688. actions_on_top = True
  689. # 详情显示项:
  690. fields = [
  691. 'name',
  692. 'relation',
  693. 'desc',
  694. 'pic',
  695. 'upl_time',
  696. ]
  697. # 列表显示项:
  698. list_display = [
  699. 'name',
  700. 'relation',
  701. 'desc',
  702. 'pic',
  703. 'upl_time',
  704. ]
  705. # 筛选过滤项:
  706. list_filter = ('upl_time',)
  707. # 搜索项:
  708. search_fields = ['name']
  709. # 设置每页显示记录数:
  710. list_per_page = 10