#django #views #inline-formset
#django #Вид #встроенный набор форм
Вопрос:
Я пытаюсь создавать записи с использованием встроенного набора форм, одновременно создавая запись с обычной формой, первичный ключ которой является внешним ключом для встроенного набора форм на одной и той же HTML-странице.
Имеет смысл? Вот что я имею в виду: предположим, у меня есть следующие две модели (очевидно, не реальный код, но вы поняли идею):
Class mainModel
Primary Key (custom pk I create)
field1
field2
Class inlineFormModel
autoPK
field1 = ForeignKey(mainModel)
field2
Теперь я хочу создать единую HTML-страницу для пользователя, чтобы он мог создавать mainModel
экземпляр одновременно с созданием нескольких inlineFormModel
экземпляров. mainModel
Была бы обычной формой, в то время как inlineFormModel
использовались бы inlineFormsets. Проблема в том, что когда я сохраняю все формы, нет внешнего ключа для ссылки на записи встроенного набора форм, поскольку модель, на которую он ссылается, все еще создается (все сохраняется в том же представлении). Имеет ли это смысл?
Как бы мне создать новый mainModel
экземпляр с несколькими secondModel
экземплярами и сохранить весь пакет с помощью одной и той же функции просмотра?
Спасибо!
Ответ №1:
Это распространенный сценарий, я не знаю, почему он не рассматривается в документах:
initial_form = mainModelForm(request.POST)
if initial_form.is_valid():
form= initial_form.save(commit=False)
my_formset = inline_formset(request.POST,instance=form)
if my_formset.is_valid():
form.save()
my_formset.save()
....... .........
# return codes here
Комментарии:
1. Имеет ли значение, есть ли у меня 3 inline_formsets, все из которых имеют одинаковый PK initial_form в качестве внешнего ключа?
2. итак, в этом случае и исходная форма, и набор форм отображаются внутри одной и той же <form>, так что все данные из обеих отправлены и определены в запросе?