Django 1.8 Admin编辑页面无字段显示问题求助
解决Django 1.8 Admin编辑NSGateway页面无字段显示的问题
我之前也碰到过类似的情况,大概率是因为你没有给NSGateway模型配置对应的ModelAdmin类,或者配置时没有明确指定要显示的字段——虽然Django默认会渲染所有可编辑字段,但在1.8这类旧版本里,偶尔会因为字段的null属性、外键关联等出现渲染异常。
具体解决方案
修改你的admin.py文件,给NSGateway添加明确的ModelAdmin配置并注册:
from django.contrib import admin from flexwan_import.models import Enterprise, NSGateway class EnterpriseAdmin(admin.ModelAdmin): # 保留你原有的EnterpriseAdmin配置,比如列表显示字段 list_display = ('enterprise_id', 'name', 'description') fields = ('enterprise_id', 'name', 'description', 'creationDate', 'lastUpdatedDate') class NSGatewayAdmin(admin.ModelAdmin): # 列表视图的字段,和你现在能正常显示的保持一致 list_display = ('nsgateway_id', 'name', 'personality', 'enterprise', 'description') # 编辑视图要显示的字段,按你需要的顺序排列 fields = ( 'nsgateway_id', 'name', 'personality', 'description', 'creationDate', 'lastUpdatedDate', 'enterprise' ) # 如果你想分组显示字段,可以用fieldsets替代上面的fields: # fieldsets = ( # ('基本信息', { # 'fields': ('nsgateway_id', 'name', 'personality') # }), # ('描述与关联', { # 'fields': ('description', 'enterprise') # }), # ('时间记录', { # 'fields': ('creationDate', 'lastUpdatedDate') # }), # ) # 注册两个模型对应的Admin类 admin.site.register(Enterprise, EnterpriseAdmin) admin.site.register(NSGateway, NSGatewayAdmin)
额外优化建议
- 自动管理时间字段:你的
creationDate和lastUpdatedDate字段可以设置自动赋值,这样编辑页面不需要用户手动输入,更符合逻辑:# 在NSGateway模型里修改字段 creationDate = models.DateTimeField(auto_now_add=True) # 创建时自动设置当前时间 lastUpdatedDate = models.DateTimeField(auto_now=True) # 更新时自动刷新时间 - 避免空字符串显示:修改模型的
__unicode__方法,当description为null时显示name,提升Admin界面可读性:# Enterprise模型 def __unicode__(self): return self.description or self.name # NSGateway模型 def __unicode__(self): return self.description or self.name
内容的提问来源于stack exchange,提问作者Xar
相关产品推荐
相关产品推荐

