Есть форма, с заказом, т.е. должно быть так что авторизованный пользователь делает заказ, и в его профиле отображаются его заказы, т.е. название товара.
Но проблема в том, если делать заказ через админку и сразу ставить покупателя, то в профиле отображаются покупки, а вот через саму форму нет, выдает ошибку
IntegrityError at /BoxShop/
(1048, "Column 'author_id' cannot be null")
т.е. поле автора(покупателя) не может быть пусто, но вроде как во view я указал (( в общем вот код
class Zayavka(models.Model):
GEEKS_CHOICES = (
("Sweet БОКС", "Sweet БОКС"),
("СЮРПРИЗ БОКС", "СЮРПРИЗ БОКС"),
("Блогер бокс", "Блогер бокс"),
("8 Марта бокс", "8 Марта бокс"),
("Halloween бокс", "Halloween бокс"),
("14 февраля бокс", "14 февраля бокс"),
("Новогодний бокс", "Новогодний бокс"),
# ("Пепси", "Пепси"),
# ("Макси чай", "Макси чай"),
)
tovar = models.CharField('Товат', max_length=50, choices=GEEKS_CHOICES)
kolvo = models.IntegerField('Количество')
subject = models.CharField('Тема', max_length=100)
sender = models.EmailField('Email', max_length=50)
message = models.TextField('Сообщение')
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
def __str__(self):
return self.tovar
class ContactForm(forms.ModelForm):
class Meta:
model = Zayavka
fields = ('tovar','kolvo','subject','sender','message')
def contactform(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
tovar = form.cleaned_data['tovar']
kolvo = form.cleaned_data['kolvo']
subject = form.cleaned_data['subject']
sender = form.cleaned_data['sender']
message = form.cleaned_data['message']
recepients = ['forli00@mail.ru']
try:
send_mail(subject,
'Имя: ' + subject + '\n' 'Номер телефона: ' + message + '\n' + 'Email: ' + sender + '\n' + 'Товар: ' + tovar + '\n' + 'Количество: ' + str(
kolvo), 'forli00@mail.ru', recepients)
except BadHeaderError:
return HttpResponse('Invalid header found')
form.save()
return redirect('thanks')
else:
form = ContactForm()
return render(request,'Main.html',{'form':form})
Профиль:
def account_view(request):
if not request.user.is_authenticated:
return redirect('feedback')
context = {}
zayavki = Zayavka.objects.filter(<b>author=request.user</b>) # Вот здесь я определяю, что заявка должна быть прикреплена к юзеру.
context['zayavki'] = zayavki
return render(request,'account.html',context)