我在 django admin list_display
中遇到了一个奇怪的问题。每当我向 list_display
添加外键时,整个更改 ListView 都会变为空白,仅显示条目总数。
模型.py:
class Organization(models.Model):
org_id = models.AutoField(primary_key=True)
org_name = models.CharField(max_length=288)
def __unicode__(self):
return self.org_name
class Meta:
db_table = u'organization'
class Server(models.Model):
server_id = models.AutoField(primary_key=True)
server_name = models.CharField(max_length=135,verbose_name="Server Name")
org = models.ForeignKey(Organization,verbose_name="Organization")
def __unicode__(self):
return self.server_name
class Meta:
db_table = u'server'
admin.py:
class ServerAdmin(admin.ModelAdmin):
list_display = ('server_name','org')
admin.site.register(Server,ServerAdmin)
现在我希望这段代码在 ChangeList View
中显示组织名称,但我却得到了这个:
如果我删除 ServerAdmin
类的 list_display
中的 org
,我会得到:
我没有修改模板或覆盖任何 ModelAdmin
方法。我使用 Mysql(5.1.58) 作为 ubuntu 11.10 存储库附带的数据库。
如果我能得到一个解决这个问题的家伙,我会很高兴。提前致谢。
最佳答案
我同意 Stefano 加入 null=True, blank=True
的事实。但是,我认为您只需要将它添加到 Organization
模型的 org_name
字段中。那应该让你通过。它必须完成,因为您已经运行 inspectdb
以从旧数据库创建模型。数据库中的 organization
表可能存储了一个空字符串。因此,添加以上内容将允许管理员显示空白字段/列。
此外,您也可以尝试使用callbacks在您不想像上面那样更改模型定义的情况下。
关于python - Django 管理列表显示 + ForeignKey = 空更改列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941857/