Как иметь встроенный набор встроенных форм в форме в Django?

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

Например, у меня есть модель контактов
class Contact(models.Model):
...

И модель связи
class Communication(models.Model):
contact = models.ForeignKey(Contact)

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

Можно ли сделать это с существующими компонентами или у меня есть безнадежная мечта?

EDIT: Я знаю, что панель администратора делает это, но как мне сделать работу в представлении?

One Solution collect form web for “Как иметь встроенный набор встроенных форм в форме в Django?”

Конечно, это возможно – как вы думаете, администратор это делает?

Взгляните на документацию встроенных форм .

Отредактировано после комментария. Конечно, вам нужно создать экземпляр и отобразить как родительскую форму, так и вложенный набор форм. Что-то вроде:

 def edit_contact(request, contact_pk=None): if contact_pk: my_contact = Contact.objects.get(pk=contact_pk) else: my_contact = Contact() CommunicationFormSet = inlineformset_factory(Contact, Communication) if request.POST: contact_form = ContactForm(request.POST, instance=my_contact) communication_set = CommunicationFormSet(request.POST, instance=my_contact) if contact_form.is_valid() and communication_set.is_valid(): contact_form.save() communication_set.save() else: contact_form = ContactForm(instance=my_contact) communication_set = CommunicationFormSet(instance=my_contact) return render_to_response('my_template.html', {'form': contact_form, 'formset':communication_set}) 

и шаблон может быть простым:

 <form action="" method="POST"> {{ form.as_p }} {{ formset }} </form> 

хотя вы, вероятно, захотите немного подробнее узнать, как вы его визуализируете.

  • Что эквивалентно «none» в шаблонах django?
  • Шаблон Django не может видеть файлы CSS
  • Зачем загружать статические файлы для каждого шаблона, даже если он расширяется?
  • ответ возврата в django rest-framework
  • Как использовать тег цикла Django
  • Ошибка Django «TemplateDoesNotExist», но «Использование загрузчика django.template.loaders.app_directories.Loader» Файл существует
  • Django: Как поймать конкретное исключение в представлении на основе класса при создании шаблона?
  • Доступ к объекту набора заданий в шаблоне django
  • Python - лучший язык программирования в мире.