我正在使用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表单,我不知道如何修改它。我在SO上发现了一些看起来像我想要的东西:
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
的电子邮件,但似乎很明显,这不起作用,当然也没有。有人有什么建议吗?
答案 0 :(得分:1)
在django中,此功能命名为related_name或"返回引用"在SQLAlchemy中。正如您在docs中看到的那样:
如果模型具有ForeignKey,则外键模型的实例将有权访问返回第一个模型的所有实例的Manager。默认情况下,此Manager名为FOO_set,其中FOO是源模型名称,小写。
因此,在您的情况下,您应该使用facility_set
或在related_name
上重新定义users
Facility
模型中的ManyToMany字段。
BTW,@schillingt:建议使用InlineModelAdmin
比其他任何事情更容易和优雅。