[英]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)
我试着换出电子邮件facility
或facilities
或facilitys
,但它似乎很明显,这是行不通的,当然它没有。 有人有什么建议吗?
在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.