Django Показать поле M2M в любой модели при использовании forms.ModelForm

Я использую формы.ModelForm для создания моей формы. Я хочу иметь возможность отображать поле manytomany в обеих формах модели, как мне это сделать?

Если отношение «многие ко многим» определено в модели, оно прекрасно и просто появляется, но если его нет в модели (но все еще связано через другую модель), оно не появляется. Как я могу сделать так, чтобы он отображался?

Надеюсь, это имеет смысл.

Спасибо


person John    schedule 22.04.2010    source источник


Ответы (1)


Используйте этот сторонний класс поля модели. Это четырехстрочный код, который является подклассом обычного класса 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')
    ...

Для получения дополнительной информации см. правое описание фрагментов кода django.

person Ludwik Trammer    schedule 22.04.2010