Django: 将模型字段添加到list_display并为每个条目显示相关值
我有以下的模型定义,见下文。
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)
在“Foo”的管理列表视图中,通过FooAdmin,list_display列表应该包含Userstatus中的“label”,这样每个label就会显示成一列。我可以创建一个方法来生成这个list_display的列表。
但是,这样的话实际上没有任何属性或可调用的内容可以让我根据可见性(多对多字段)为每个label列返回一个布尔值。
我有哪些选择?我应该尝试拦截对Foo的可调用或属性请求,并动态生成一个布尔结果吗?(频繁访问数据库或让列可排序是另一个问题,但先解决最重要的事情)。
2 个回答
0
你确定要把用户状态做成一个数据库表,而不是仅仅用一个包含几个状态的“选择”元组吗?
1
Django 文档上说...
ManyToManyField 字段不被支持,因为这意味着每一行数据都需要执行一个单独的 SQL 语句。如果你还是想这样做,可以给你的模型添加一个自定义的方法,并把这个方法的名字加到 list_display 中。(下面会有更多关于在 list_display 中使用自定义方法的信息。)