[英]Foreign key model in Django Admin
我在Django中有两个用户角色:
我创建了两个模型,卖方模型有一个指向Commercials的ForeignKey字段(每个卖方都有与之相关的广告)。 当我在admin中注册模型时,可以使用StackedInline
, TabularInline
等创建广告和相关卖家。
我的问题是我需要将用户与该模型关联以便进行身份验证,登录等。在管理员中,我需要创建一个用户(以内联方式,而不是下拉框)
这是我的代码:
在models.py中 :
class Commercial(models.Model):
name = models.CharField(max_length=255, null=True)
user = models.OneToOneField(User, null=True)
class Seller(models.Model):
name = models.CharField(max_length=255, null=True)
commercial = models.ForeignKey('Commercial')
user = models.OneToOneField(User, null=True)
在admin.py中 :
class SellerAdmin(admin.StackedInline):
model = Seller
extra = 1
class CommercialAdmin(admin.ModelAdmin):
inlines = [SellerAdmin]
admin.site.register(Commercial, CommercialAdmin)
我需要在模态窗口中内联编辑,创建,与该模型相关的用户等,请问有什么办法吗?
没有办法以内联形式建立反向关系(可以这么说)。 Django管理面板默认没有该功能。
您可以做的是取消注册默认的UserAdmin,通过继承原始UserAdmin创建一个新的Admin面板,然后将此卖方添加为Inline。 仍然存在Django不支持多个内联的问题,因此,您将无法在同一管理页面中使用Commercial模型。
要解决此问题,您可以参考文档中的此信息,该文档显示了如何为特定的ModelAdmin覆盖自动创建的ModelForm。
但是,由于它们需要大量工作,因此不会有太大帮助。 我宁愿建议在应用程序的使用方式上实现一种变通方法,而不是使它复杂化。 取决于项目的需求,是否需要经历这么多麻烦
Django嵌套内联库可能会为您提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.