Я пытаюсь создать многошаговую форму в django2.2.По-видимому, в предыдущих версиях django собственный FormWizard устарел, поэтому единственное решение, с которым я столкнулся, это django-formtools .У меня есть две модели, которые предоставляют FormWizard обязательные поля.Я был в состоянии сделать словарь пользовательского ввода из форм успешно.Я намерен сохранить эти данные в одну из моделей.Однако для модели требуется поле user.id, поскольку оно является внешним ключом для объекта CustomUser и поэтому не может иметь значение null.Я считаю, что есть способ добавить этот user.id в словарь данных, а затем сохранить весь dict как экземпляр в моей целевой модели.Вот где я боролся.
Я пытался вызвать user = request.user, но возникает ошибка, говорящая, что «запрос не определен», так как это представление на основе классов (наверное, поэтому).
Мои модели
class Category(models.Model):
name= models.CharField(blank = True, max_length=500)
def __str__(self):
return self.name
class ModelsAd(models.Model):
title = models.CharField(max_length=500)
category = models.ForeignKey(Category,default=1, on_delete=models.CASCADE)
location = models.ForeignKey(Location,default=1, blank=True, on_delete=models.CASCADE)
description = models.CharField(max_length=1000)
price = models.PositiveIntegerField(default=1000)
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
created_at = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
Мои формы
all_categories = Category.objects.all()
class CategoryChoiceForm(forms.Form):
category = forms.ModelChoiceField(queryset = all_categories, to_field_name = "name", empty_label=None)
class ModelsAdForm(ModelForm):
class Meta:
model = ModelsAd
fields = ('title','location', 'description', 'price')
Мои представления
from formtools.wizard.views import SessionWizardView
class FormWizardView(SessionWizardView):
template_name = "post_ad.html"
form_list = [CategoryChoiceForm, ModelsAdForm]
def done(self, form_list, **kwargs):
form_data = [form.cleaned_data for form in form_list]
data_dict={}
for item in form_data:
data_dict.update(item)
add_data=ModelsAd(**data_dict)
# add_data.save()
test=ModelsAd.objects.all()
print(test)
return render(self.request, 'index.html',locals())
Мне нужно передать user.id в FormWizardView, чтобычто я могу добавить его к data_dict, чтобы я мог успешно сохранить dict как экземпляр в моей БД.Пока я бегаю кругами.Любая помощь будет высоко оценена.Кто-нибудь, пожалуйста, по крайней мере, укажите мне в правильном направлении