LINUX.ORG.RU

Django nested formset

 , ,


0

1

Всем привет.

Вопрос по django formset. Допустим есть модель и относящаяся к ней вторая модель:

class SomeModel(models.Model):
    pass


class RelatedModel(models.Model):
    some_model = models.ForeingKey(to=SomeModel, ...)

Так же к ним обычные формы. Теперь, на странице может быть несколько SomeModel, для этого используем modelformset_factory:

SomeModelFormset = modelformset_factory(SomeModel, SomeModelForm, extra=2, can_delete=True)
some_model_formset = SomeModelFormset(request.POST, queryset=some_model_qs, prefix='sm')

Таким образом у нас может быть много форм SomeModel и к каждой из них нужно добавить таким же образом formset из RelatedModel.

Как один из вариантов — пройти по формам some_model_formset и к каждой из них создать отдельный formset из RelatedModel с префиксом — prefix='rm_%s % index_of_some_model_form' и потом так же в цикле валидировать эти формы.

Нет ли более изящного решения этой проблемы?

Поискать расширение Django, которое это делает? Вообще проблема конечно известная, но я сомневаюсь, что она как то некостыльно решается из коробки стандартными средствами. Помню, когда мне нужно было подобное сделать в django.contrib.admin, пришлось искать расширение django, которое позволяет это сделать.

eternal_sorrow ★★★★★
()

я бы посоветовал просто создавать форму SomeModelForm и RelatedModelFormset в цикле, ставя уникальные префиксы. Например:

forms = []
for i in range(5):
    forms.append(
        SomeModelForm(request.POST or None, prefix=i),
        related_model_formset(request.POST or None, prefix=i)
    )

dicos ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.