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