2014-01-14 2 views
0

Что такое способ defacto создания отношений модели в Django через формы frontend. Например, пользователь подписывается на услугу, используя форму, они начинают цитату. В получении цитаты они могут выбирать и добавлять продукты в свою переменную, задающую цитату, такую ​​как размеры в этом процессе.Создание отношений модели через формы

Это моделируется с использованием соответствующих моделей User, Quote, Product и соответствующих отношений.

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

Могу ли я загрузить в форму цитаты скрытое поле для соответствующего user_id, которое затем можно обработать вручную, чтобы сформировать отношения «один ко многим».

Мне просто интересно, если это что-то учитывается в формах или мне нужно вручную создать формы для достижения моей цели.

ответ

0

Это одна из самых сложных вещей, которые можно попытаться достичь, но в Django есть несколько вещей, которые помогут вам.

Вам понадобится модель ManyToMany field на модели Quote, чтобы связать Продукты с ней.

Это может отображаться в формах просто через ModelMultipleChoiceField:
https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelmultiplechoicefield
... который просто оказывает основное множественного выбора списка существующих продуктов.

Интерфейс, который вы хотите, скорее всего, больше похож на inline formset. Усложнением здесь является то, что они предназначены для отношений ForeignKey, а не ManyToMany.

Под обложками отношение ManyToMany фактически представляет собой только два отношения ForeignKey через промежуточную «сквозную» модель. Мы можем использовать это, чтобы построить встроенный formset на сквозной модели, смотрите этот ответ:
https://stackoverflow.com/a/10999074/202168

Вы обратите внимание на предостережение в том, что ответ, строковые строки не будут знать, какие Quote они принадлежат, если вы переопределения некоторый код.

Вы можете, как смотреть на некоторых вспомогательных приложениях, которые обеспечивают пользовательские виджеты для полого ManyToMany:

Смежные вопросы