我在Django中有两个用户角色:
我创建了两个模型,卖方模型对Commercials有一个ForeignKey字段(每个卖家都有商业相关)。当我在管理员中注册模型时,我可以使用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)
我需要编辑,创建,与这些模型相关的用户等内联而不是模态窗口,有什么办法吗?
答案 0 :(得分:0)
没有办法以Inlines的形式建立反向关系(也就是说)。 Django管理面板默认没有该功能。
您可以取消注册默认的UserAdmin,通过继承原始管理员面板来创建新的管理员面板,并将此卖家添加为内联。 Django仍然存在不支持多个内联的问题,因此,您将无法在同一个管理页面中使用商业模型。
要解决此问题,您可以参考this information from the doc,其中显示了如何为特定的ModelAdmin覆盖自动创建的ModelForm。
然而,这不会有用,因为它们需要做很多工作。我宁愿建议在如何使用应用程序时实现一种解决方法,而不是将其复杂化。取决于项目的需求,是否需要经历这么多麻烦
答案 1 :(得分:0)
Django nested inlines库可能会对您有所帮助。