Итак, я разделил форму на два этапа, используя мастер форм Django formtools. Форма работает, данные сохраняются, за исключением множества полей.
Пользователи могут создавать объявления, которые можно фильтровать по тегам. Модель тегов связана с моделью объявления через множество полей, однако при сохранении формы выбранные теги не сохраняются в модели объявления.
models.py
class Ad(models.Model):
title = models.CharField(max_length=200)
description = RichTextField()
tags = models.ManyToManyField('Tag')
class Tag(models.Model):
name = models.CharField(max_length=200)
просмотров. py
FORMS = [
('title', AdCreateFormStepOne),
('tags', AdCreateFormStepTwo),
]
TEMPLATES = {
'title': 'grid/ad_form_title.html',
'tags': 'grid/ad_form_tags.html',
}
class AdWizardView(SessionWizardView):
form_list = FORMS
def get_template_names(self):
return [TEMPLATES[self.steps.current]]
def done(self, form_list, **kwargs):
instance = Ad()
for form in form_list:
instance = construct_instance(form, instance, form._meta.fields, form._meta.exclude)
instance.save()
# After the instance is saved we need to set the tags
instance.tags.set(form.cleaned_data['tags'])
return redirect('index')
Так что, я думаю, мне все еще приходится обрабатывать множество отношений в методе done для AdWizardView. Я видел ответ на следующий вопрос , но решение выдает ошибку ...
Объект 'odict_values' не поддерживает индексирование
Кто-нибудь знает что мне здесь не хватает?
С наилучшими пожеланиями,
Редактировать: Просто для пояснения, объект в модели Tag уже существует, выбранный с помощью виджета CheckboxSelectMultiple () в формах.