【发布时间】:2019-04-09 14:42:36
【问题描述】:
我正在使用 django 2 和 python 3。
在我的模型中,我的用户可以拥有应用程序列表。应用程序只能有一个所有者。 我像这样使用了 ForeingKey:
class User(AbstractUser):
# nothing interresting for this question here
pass
class StoreApplication(models.Model):
owner = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name="applications"
)
现在我想在用户的管理页面中列出用户的应用程序,例如应用程序名称列表,只是只读的东西。不在列表视图中,在编辑视图中。
我知道 InlineModelAdmin,但它似乎无法解决我的问题,因为它包含每个用户应用程序的整个申请表。
如果我尝试在我的用户管理员中将该字段引用为“应用程序”:
class UserAdmin(admin.ModelAdmin):
list_display = ("username", )
fieldsets = (
("Général", {
"fields": ("username", "applications", )
}),
)
发生错误:
Unknown field(s) (applications) specified for User. Check fields/fieldsets/exclude attributes of class UserAdmin.
【问题讨论】:
-
与
ModelAdmin一样,InlineModelAdmin可以自定义为仅包含您想要的字段(使用fields = ...),如果您愿意,也可以只包含只读字段,方式完全相同。这是显示多对多关系的所有相关模型的唯一方法(除了定义您自己的方法,例如返回相关模型的某个值的逗号分隔列表的方法)
标签: django django-admin