相关疑难解决方法(0)

如何在Django Admin中访问ManyToManyField的两个方向?

Django管理员filter_horizontal设置为编辑多对多关系提供了一个很好的小部件.但这是一个特殊的设置,需要一个字段列表,所以它只能在(admin for the)模型中定义ManyToManyField; 如何在(其他模型的管理员)上获取相同的小部件,向后阅读关系?

我的模型看起来像这样(可以随意忽略User/ UserProfile复杂化;但它是真正的用例):

class Site(models.Model):
    pass
class UserProfile(models.Model):
    user = models.OneToOneField(to=User,unique=True)
    sites = models.ManyToManyField(Site,blank=True)
Run Code Online (Sandbox Code Playgroud)

我可以在管理表单上获得一个不错的小部件UserProfile

filter_horizontal = ('sites',)
Run Code Online (Sandbox Code Playgroud)

但无法看到如何获得Site管理员的等价物.

我也可以通过添加内联来获得部分SiteAdmin,定义为:

class SiteAccessInline(admin_module.TabularInline):
    model = UserProfile.sites.through
Run Code Online (Sandbox Code Playgroud)

虽然这是迂回而且不方便; 对于简单地管理多对多关系,小部件根本不直观.

最后,这里描述的一个技巧涉及定义另一个ManyToManyFieldon Site并确保它指向同一个数据库表(并跳过一些箍,因为Django实际上并不是设计为在描述相同数据的不同模型上具有不同的字段).我希望有人能告诉我更清洁的东西.

django many-to-many django-admin

11
推荐指数
1
解决办法
2794
查看次数

标签 统计

django ×1

django-admin ×1

many-to-many ×1