【发布时间】:2021-05-13 20:19:33
【问题描述】:
我正在尝试将 OneToOneField 中的字段添加到我的管理视图中。这是我的模型外观的示例。
class Customer(BaseUser):
name = CharField()
address = CharField()
secondary_information = OneToOneField("SecondaryCustomerInfo", on_delete=SET_NULL, null=True)
class SecondaryCustomerInfo(models.Model):
email = EmailField()
我尝试像这样将字段作为内联添加。
class SecondaryCustomerInfoInline(admin.StackedInline):
model = SecondaryCustomerInfo
class CustomerAdmin(admin.ModelAdmin):
inlines = [SecondaryCustomerInfoInline]
但我得到了错误
<class 'user.admin.SecondaryCustomerInfoInline'>: (admin.E202) 'user.SecondaryCustomerInfo' has no ForeignKey to 'user.Customer'.
我习惯于将 OneToOneField 放在辅助模型上,但我的同事要求我将它放在主 Customer 模型上,因为我们将更频繁地访问该信息。我认为改变事情是让我绊倒的原因。如何在 Customer 的管理视图中包含来自 SecondaryCustomerInfo 的字段?
【问题讨论】:
-
您是否尝试使用 ForeignKey 字段?无论如何,这是一对一的关系。
-
我没有。是否无法在管理员中使用一对一关系显示此信息?我可以将其更改为 ForeignKey 但仍想知道这是如何完成的。
-
在管理面板中看不到secondary_information吗?
-
我可以作为它自己的模型,但不在客户详细信息视图中。
-
Okey 然后试试这个:secondary_information = ForeignKey(SecondaryCustomerInfo, on_delete=SET_NULL, null=True)
标签: django django-models django-admin inlines