Как говориться, все уже давно украдено до нас – в 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 комментарий:
Спасибо, так действительно проще, чем с обычными formset_factory. Как то я пропустил inlineformset_factory :)
Отправить комментарий