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

标签 python mysql django django-admin

我在 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 中显示组织名称,但我却得到了这个:

empty changelist :(

如果我删除 ServerAdmin 类的 list_display 中的 org,我会得到:

change list with data :(

我没有修改模板或覆盖任何 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/

相关文章:

python - Django 登录重定向到密码重置页面而不是个人资料页面

python - Django 管理日期范围过滤器

mysql - 字段中的 Django 正则表达式

php - 即使我的连接文件有效,phpmyadmin 上的数据库也不会保存数据

php - Messenger bot - 定时响应

python - python 中的氡变换

python - 为什么 tkinter 进度条会让事情变慢?

python - 如何在Python中安排周期性任务?

python - 捕获表达式中值为 "or"的 None 值

java - 数据库不存储尖括号之间的内容 "<>"