簡體   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