Как сделать форму Django для модели и всех ее дочерних элементов по определенному внешнему ключу? - PullRequest
0 голосов
/ 18 ноября 2009

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

from django.db import models
class Supervisor(models.Model):
    name = models.CharField(max_length=100)

class Underling(models.Model):
    supervisor = models.ForeignKey(Superisor, related_name="underlings")
    name = models.CharField(max_length=100)

Это должно быть довольно стандартно, верно? Просто сделайте FormSet для подчиненных, и ... что дальше? Интерфейс администратора Django делает это, так как мне это сделать?

1 Ответ

0 голосов
/ 18 ноября 2009

Сначала вы должны определить ModelForm для Underling s:

class UnderlingForm(forms.ModelForm):
    class Meta:
        model = Underling

Тогда вы создадите FormSet из UnderlingForm s:

UnderlingFormSet = formset_factory(UnderlingForm, extra=3) # 3 Underlings.

Затем вы создаете и создаете их циклы (или передаете их в контекст шаблона):

formset = UnderlingFormSet()
for form in formset.forms:
    print form.as_table()

Поскольку у вас также будет SupervisorForm в том же виде, я бы посоветовал взглянуть и на prefix параметр . Если у вас все еще остались вопросы о Formsets, вот официальные документы .

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