繁体   English   中英

Django将ManyToMany关系添加到管理员用户表单

[英]Django Add ManyToMany Relationship to Admin User Form

我正在使用django管理员功能作为网站的后端管理。 除一件事外,它似乎可以完美地工作,可以满足我的需要。 我的一个模型与用户之间存在多对多关系。 这是模型:

class Facility(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.TextField()     
    users = models.ManyToManyField(User)    
    def __str__(self):
        return str(self.id)    

我已经有了它,可以将用户添加到设施页面上的设施,但是由于内置了管理表单,因此我不知道如何修改它。 我发现了一些我想要的东西:

admin.site.unregister(User)

class MyUserAdmin(UserAdmin):
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'password1', 'password2')}
        ),
    )

admin.site.register(User, MyUserAdmin)

我试着换出电子邮件facilityfacilitiesfacilitys ,但它似乎很明显,这是行不通的,当然它没有。 有人有什么建议吗?

在Django中,此功能在SQLAlchemy中命名为related_name或“反向引用”。 正如您在docs中看到的:

如果模型具有ForeignKey,则外键模型的实例将有权访问Manager,该Manager返回第一个模型的所有实例。 默认情况下,此Manager名为FOO_set,其中FOO是源模型名称,小写。

因此,在您的情况下,应在Facility模型中的users ManyToMany字段上使用facility_set或重新定义related_name

顺便说一句, @schillingt :建议使用InlineModelAdmin比其他任何工具都更加轻松和优雅。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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