繁体   English   中英

Django Admin中的外键模型

[英]Foreign key model in Django Admin

我在Django中有两个用户角色:

  • 商业广告
  • 卖家

我创建了两个模型,卖方模型有一个指向Commercials的ForeignKey字段(每个卖方都有与之相关的广告)。 当我在admin中注册模型时,可以使用StackedInlineTabularInline等创建广告和相关卖家。

我的问题是我需要将用户与该模型关联以便进行身份验证,登录等。在管理员中,我需要创建一个用户(以内联方式,而不是下拉框)

这是我的代码:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM