【问题标题】:Django Show M2M field in either model when using forms.ModelForm使用 forms.ModelForm 时,Django 在任一模型中显示 M2M 字段
【发布时间】:2010-04-22 09:38:49
【问题描述】:

我正在使用 forms.ModelForm 来创建我的表单。我希望能够以两种模型形式显示多对多字段,我该怎么做?

如果在模型中定义了多对多关系,它很好并且只是出现,但如果它不在模型中(但仍然通过另一个模型链接)它不会出现。我怎样才能让它显示出来?

希望这是有道理的。

谢谢

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    使用this third party model field class。它是常规 ManyToMany 类的子类,但指示 Django 不要为第二个关系创建单独的表。

    您通常在第一个模型上创建关系,显式指定数据库表名(“db_table”选项):

    class FirstModel(models.Model):
        second_model = ManyToManyField('SecondModel', related_name='second_model', db_table=u'TABLE_FOR_FIRST_AND_SECOND_MODEL')
        ...
    

    对于第二个模型使用 ManyToManyField_NoSyncdb,所以它不会尝试创建第二个表:

    class SecondModel(models.Model):
        first_model = ManyToManyField_NoSyncdb('FirstModel', related_name='first_model', db_table=u'TABLE_FOR_FIRST_AND_SECOND_MODEL')
        ...
    

    有关详细信息,请参阅the right-hand description on django snippets

    【讨论】:

      猜你喜欢
      • 2011-03-07
      • 1970-01-01
      • 2020-03-30
      • 2011-12-18
      • 2022-01-22
      • 1970-01-01
      • 2013-04-20
      • 2013-02-05
      相关资源
      最近更新 更多