@forli

Как соединить модель с автором?

Есть форма, с заказом, т.е. должно быть так что авторизованный пользователь делает заказ, и в его профиле отображаются его заказы, т.е. название товара.
Но проблема в том, если делать заказ через админку и сразу ставить покупателя, то в профиле отображаются покупки, а вот через саму форму нет, выдает ошибку
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)
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы