[英]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.