2016-01-01 6 views
3

Прежде всего, я должен признать, что я совершенно не знаком с Django. Я застрял в проблеме, но, вероятно, я просто не знаю, как правильно это сделать, чтобы получить соответствующую помощь в Интернете. Поэтому я ценю любую помощь и благодарю вас за то, что вы были терпеливы со мной как новичок. ^^Django: «разбить» форму на нескольких страницах

В моих models.py я определяю несколько RadioSelects с именем «choice_1», «choice_2» и т. Д. В мой template.html петля I над form объекта Джанго, чтобы получить все RadioSelects в таблице, которая работает прекрасно:

<table class="table"> 
    {% for field in form %} 
     <tr>{% formfield field %}</tr> 
    {% endfor %} 
</table> 

Вот моя проблема:

Теперь я хотел бы «разделить» форма на несколько страниц, то есть я хотел бы иметь каждый отдельный RadioSelect на отдельной странице в рамках одного и того же HTML-шаблона. Для этого я искал сеть и stumpled над двумя разными способами я мог думать, чтобы справиться с этой проблемой:

  1. In this thread, например, рекомендуется slice шаблон фильтра. Для меня это казалось бы идеальным решением, поскольку его можно было легко реализовать, используя {% for fields in form|slice:":1" %}. Однако я не могу сделать это с помощью slice; на самом деле, он ничего не меняет.

  2. Другая идея - это нечто вроде «разбиения на страницы» или тому подобное. Я уже нашел классы django-build-in pagination, но я не могу заставить все работать.

Без какой-либо идеи, как решить эту проблему, я был бы очень признателен за вашу помощь. Спасибо вам большое заблаговременно и наилучшие пожелания, fh_!

+0

Вы перешлите к списку, как указано в первом варианте? – onyeka

+0

@oneyka: На самом деле, я думал, что объект 'form' уже находится в форме списка. Возможно, я должен отметить, что я работаю с проектом Django под названием oTree, который позволяет программировать эксперименты в области социальных наук. В документах указано, что «форма» - это специальная переменная. Это объект формы Django, который является итерируемым, элементами которого являются объекты поля формы Django. 'Formfield' может принимать в качестве аргумента объект поля Django или он может выражение {% formfield player.foo%} и {% formfield group.foo%}, но player.foo должно быть записано как литерал ... " –

ответ

1

Я думаю, что вам нужно Django Form Wizard, который теперь является частью django-formtools, а не в основном Django. Для каждого просмотра страницы вы определяете форму (в вашем примере, я думаю, вам нужно будет определять формы, а не полагаться на реализацию modelform), а затем обернуть эти формы в FormWizard.

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