5 окт. 2010 г.

Сказ о inlineformset_factory в Django

Как говориться, все уже давно украдено до нас – в django есть поддержка наборов форм (formset), объединенных отношением к общему объекту (т.е. у одной сущности есть ForeignKey к другой – К.О.). Ниже листинг, который позволяет очень просто управляться с этим набором (листинг шаблонов и моделей не привожу – он тривиален):


# in views

from django.forms.models import inlineformset_factory

...

@render_to('my_template.html')

def step2(request, hash):

    h = get_object_or_404(ModelWithHash, hash=hash)

    MyFormSet = inlineformset_factory(ModelWithHash, \

                RelatedWithModelWithHashModel, extra=1)

    if request.POST:

        formset = MyFormSet (request.POST, instance=h)

        if formset.is_valid():

            formset.save()

            formset = MyFormSet(instance=h) # Затер лишние формы

    else:

        formset = MyFormSet(instance=h)

    return {

        'formset':formset,

    }


Уже используете? Где пригодилось?




1 комментарий:

Anatoly Vostryakov комментирует...

Спасибо, так действительно проще, чем с обычными formset_factory. Как то я пропустил inlineformset_factory :)