2013-07-23 2 views
1

Насколько я знаю, даже с Django 1.5 нет встроенной обработки вложенных форм - т.е. у меня есть произвольное количество групп, к которым я должен добавить произвольное количество членов , все с той же страницы. В настоящее время я пытаюсь использовать Nathan Yergler's method to do so, но он, кажется, сломан под Django 1.5.Django inested formsets snag

Суть метода состоит в том, чтобы переопределить метод add_fields группы форм, чтобы включить в него inline_formset членов. Тем не менее, когда я создаю экземпляр GroupFormSet в представлении, независимо от того, был ли я прошел все экземпляры группы, я получаю ValidationError: 'ManagementForm data is missing or has been tampered with'

Например, отрывок из моего вида по get_context_data:

group_inst = models.TemplateFieldGroup.objects.filter(name="Study")[0] 
context['group_formset'] = forms.GroupFormSet(instance=group_inst) 

ли кто-нибудь успешно развернул этот метод под Django 1.5, или, возможно, у кого-то есть лучший способ достичь той же цели?

Небольшое редактирование: мои «группы» на самом деле являются членами еще большего зонтика: объект Template имеет несколько TemplateFieldGroups, которые имеют несколько TemplateFields. Однако даже передача GroupFormSet() соответствующего экземпляра шаблона не решает проблему.

+0

Не могли бы вы удалить свой комментарий и добавить это к редактированию своего вопроса, пожалуйста? –

ответ

1

Недавно у меня была аналогичная проблема. Я решил это, создав некоторые пользовательские классы форм и форм, основанные на ответе StackOverflow: Django admin - inline inlines (or, three model editing at once)

Этот метод хорошо работал для Django 1.4, но при обновлении до Django 1.5 он переставал работать. Чтобы решить эту проблему, я создал репозиторий github: https://github.com/didorothy/mlrma

README.md более подробно описывает мою конкретную ситуацию и цели. Мое решение сосредоточено на администраторе Django, но его можно разделить и использовать самостоятельно. Чтобы сделать более трех уровней, он может быть расширен.

+0

Интересно! Мне нужно попробовать, хотя я не уверен, помогает ли она мне в достижении моей цели создания моего интерфейса EXTERNAL для администратора. В настоящее время я использую встроенные в django встроенные строки, которые являются ошибками и намного clunkier для этого отношения, чем то, что вы написали (при условии, что он работает так, как вы предлагаете :), но настоящий тест заключается в создании с ним настраиваемого интерфейса. –

Смежные вопросы