Всем доброго дня!Позволю себе задать очередной вопрос по Django Уважаемому Сообществу.Имеется задача заполнять пользователем набор данных (Review), содержащий в себе список объектов (Card).Реализую данную фишку через FormWizard следующим образом:1. В forms.py создал два класса ReviewForm1 и ReviewForm2.2. В urls.py описал урл, отрабатывающий метод ReviewWizard url(r'^review_wizard/$', ReviewWizard.as_view(FORMS), name='add_review_wizard'), 3. Во views.py описал метод
FORMS = [("place", ReviewForm1),
("card", ReviewForm2)]
TEMPLATES = {"place": "main/place_form.html",
"card": "main/card_form.html"}
class ReviewWizard(SessionWizardView):
def get_template_names(self):
return [TEMPLATES[self.steps.current]]
def get_context_data(self, form, **kwargs):
context = super(ReviewWizard, self).get_context_data(form=form, **kwargs)
if self.steps.current == 'card':
context.update({'ok': 'True'})
return context
def done(self, form_list, **kwargs):
place_form = form_list[0].cleaned_data
card_form = form_list[1].cleaned_data
r = Review.objects.create(
date = place_form['date'],
pub_date = place_form['pub_date'],
user_name = place_form['user_name'],
pos = place_form['pos'],
cheque = place_form['cheque'],
place = place_form['place'],
)
p = Price.objects.create(
review = r,
sku = card_form['sku'],
price = card_form['price'],
price_delta = card_form['price_delta'],
)
return HttpResponseRedirect(reverse('main.views.review_detail', args=(r.id,)))
-
Описал шаблоны в place_form.html и card_form.htmlШаблон card_form выглядит приблизительно так:
{% csrf_token %}
{{ wizard.management_form }}
{% for item in wizard.form %}
{{ wizard.form }}
{% endfor %}
{% if wizard.steps.prev %}
Назад...
{% endif %}
Но никак не могу понять, как в шаблоне card_form.html выводить несколько объектов класса Card с возможностью редактирования его свойств и сохранения всех этих данных в объекте Price?В описанном выше примере объекты выпадают в виде select option, но в базу записывается только последний. Заранее спасибо за ответы!
Updated 17 March 2013, 17:49 by 8r3y.