Встроенные формы Django

#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>, так что все данные из обеих отправлены и определены в запросе?