Django:将模型字段添加到list_display并显示每个条目的相关值

时间:2011-07-22 12:06:05

标签: python django django-admin

我有以下模型定义,见下文。

models.py:

class Userstatus(models.Model):
    label = models.CharField(...)
    description = models.CharField(...)


class Foo(models.Model):
    title = models.CharField(...)
    visibility = models.ManyToManyField(Userstatus)

admin.py:

class FooAdmin(ModelAdmin):
    list_display = ('id', 'title', )

admin.site.register(Foo, FooAdmin)

在FooAdmin的“Foo”管理列表视图中,list_display列表应包含Userstatus中的“标签”,以便显示每个标签的列。我可以创建并调用一个为list_display创建列表的方法。

但是实际上没有任何属性或可调用的东西可以让我根据可见性多对多字段为每个标签列返回一个布尔值。

我有什么选择?我是否应该尝试拦截对Foo的可调用或属性请求并动态创建布尔结果? (过于频繁地访问数据库或使列可排序是另一个问题,但首先要做的事情。)

2 个答案:

答案 0 :(得分:1)

Django documentation说......

  

不支持ManyToManyField字段,因为这将需要   为表中的每一行执行单独的SQL语句。如果你   尽管如此,还是要为您的模型提供自定义方法,然后添加   该方法的名称为list_display。 (有关定制的更多信息,请参阅下文   list_display中的方法。)

答案 1 :(得分:0)

您确定要将Userstatus作为数据库表而不仅仅是可通过“选择”元组访问的一些状态列表吗?