【问题标题】:django many-to-many field admin pagedjango 多对多字段管理页面
【发布时间】:2014-10-20 05:21:33
【问题描述】:

我在 Django 中的两个模型之间有一个多对多字段。然而,我只在管理页面上的一个模型中看到一个表单字段。我尝试在第二个模型中添加一个多对多字段,虽然这在管理页面中添加了一个表单字段,但这两个表单字段没有同步(因此更改一个表单字段的值不会影响另一个)。有没有办法建立多对多关系并在管理页面中有两个表单字段并且两者都是同步的?

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    如果你在两个模型中都定义了m2m关系,并且将一个的“through”属性设置为另一个的“through”,你就可以从双方访问m2m关系,并且可以看到它来自两个管理页面。

    class Test1(models.Model):
        tests2 = models.ManyToManyField('Test2', blank=True)
    
    class Test2(models.Model):
        tests1 = models.ManyToManyField('Test1', through=Test1.tests2.through, blank=True)
    

    https://code.djangoproject.com/ticket/897所见

    【讨论】:

    • 当前版本的 Django 显式 disallow 多对多字段手动指定关系模型(即使用 through 参数)在管理界面中显示。
    【解决方案2】:

    有一个名为 django-admin-extend 的开源 Django 应用程序,它使用 add_bidirectional_m2m 和 _get_bidirectional_m2m_fields 解决了双向多对多字段的问题。可以通过pip安装。

    https://github.com/kux/django-admin-extend

    https://pypi.python.org/pypi/django-admin-extend

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 2011-07-07
      • 2021-06-20
      • 2011-03-10
      • 2011-06-26
      • 2015-10-07
      • 2012-08-23
      相关资源
      最近更新 更多