Я пытаюсь сделать то, что должно быть очень распространенным: добавить / отредактировать несколько связанных моделей в одном форма.Например:
Visitor Details:
Select destinations and activities:
Miami [] - swimming [], clubbing [], sunbathing[]
Cancun [] - swimming [], clubbing [], sunbathing[]
Мои модели - это посетитель, пункт назначения и действие, при этом посетитель имеет поле ManyToMany в пункте назначения через промежуточную модель VisitorDestination, которая содержит подробную информацию о действиях, которые необходимо выполнить в пункте назначения (само по себе поле ManyToMany в Деятельность).
Visitor ---->(M2M though VisitorDestination) -------------> Destination
|
activities ---->(M2M)---> Activity
Обратите внимание, что я не хочу вводить новые значения назначения / активности, просто выберите из доступных в базе данных (но это совершенно законное использование полей M2M, верно? )
Мне это кажется чрезвычайно распространенной ситуацией (отношение многих ко многим с дополнительными деталями, которые являются полем FK или M2M в какой-то другой модели), и это выглядит как наиболее разумное моделирование, но, пожалуйста, поправьте меня, если я ошибаюсь.
Я потратил несколько дней на поиск Django docs / SO / googling, но не смог понять, как с этим справиться. Я пробовал несколько подходов:
Форма пользовательской модели для посетителя, где я добавляю поля с множественным выбором для пункта назначения и действия. Это работает нормально, если пункт назначения и действие могут быть выбраны независимо, но здесь они коррелированы , т.е. я хочу выбрать одно или несколько действий для каждого пункта назначения
Используя inlineformset_factory
для создания набора форм назначения / действий с inlineformset_factory (Destination, Visitor)
. Это не работает, потому что посетитель имеет отношение M2M к пункту назначения, а не FK.
Настройка простого набора форм с использованием formset_factory
, например DestinationActivityFormSet = formset_factory (DestinationActivityForm, extra = 2)
. Но как спроектировать DestinationActivityForm
? Я недостаточно изучил это, но это выглядит не очень многообещающе: я не хочу вводить пункт назначения и список действий, мне нужен список флажков с метками, установленными для пункта назначения / действий, которые я хочу для выбора, но formset_factory
вернет список форм с идентичными метками.
Я полный новичок в django, так что, возможно, решение очевидно, но я считаю, что документация в этой области очень слабая - если у кого-то есть указатели на примеры использования форм / наборов форм, которые также были бы полезны
спасибо!