Django管理员列表显示+ ForeignKey =空更改列表


问题内容

我在django
admin中遇到一个奇怪的问题list_display。每当我将外键添加到list_display整个更改列表视图时,该视图就会变为空白,仅显示条目总数。

models.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,但我得到的是:

空的变更单:(

如果我删除orglist_displayServerAdmin班级,我得到这样的:

用数据更改列表:(

我没有修改模板或覆盖任何ModelAdmin方法。我正在使用Mysql(5.1.58)作为ubuntu 11.10存储库随附的数据库。

如果能为这个有问题的家伙讨价还价,我将感到非常高兴。提前致谢。


问题答案:

我第二点是 Stefano ,这null=True, blank=True是要补充的事实。但是,我认为您只需要将其添加到模型org_name字段即可Organization。那应该让您通过。之所以必须这样做,是因为您已经inspectdb从旧版数据库创建模型。organizationDB中的表可能存储了一个空字符串。因此,添加以上内容将允许管理员显示空白字段/列。

此外,您也可以在不想像上面那样更改模型定义的情况下尝试使用回调