IntegrityError : нулевое значение в столбце отношения " нарушает ограничение not-null

Создаю небольшой интернет-магазин, на странице товара размещаю форму заказа с помощью FormMixin и TemplateView, при отправке заказа получаю ошибку "null value in column "customer_id" of relation "products_order" violates not-null constraint". ПОДРОБНАЯ ИНФОРМАЦИЯ: Неудачная строка содержит (21, null)." ошибка :

models.py

class Product(models.Model):

    name = models.CharField(max_length=255)
    description = models.TextField()
    nominal_price = models.PositiveIntegerField(verbose_name='prix normal',)
    reduced_price = models.PositiveIntegerField(blank=True, null=True)
    quantity = models.PositiveIntegerField(default=10)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='products')
    photo = models.ImageField(upload_to="img/products/", default="img/products/user_default.png")

    def __str__(self):
        return self.name


class Customer(models.Model):
    full_name = models.CharField(max_length=150)
    address = models.CharField(max_length=1500, null=True)
    phone = models.IntegerField()
    city = models.CharField(max_length=100)
    email = models.EmailField(null=True)
    def __str__(self):
        return self.full_name

class Order (models.Model):
    product = models.ManyToManyField(Product, through='OrderProduct')
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)


class OrderProduct(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)

views.py :

class ProductDetailView(FormMixin, TemplateView):
    model = Product
    template_name = 'product.html'
    form_class = OrderForm

    def get_success_url(self):
        return reverse('index')

    def post(self, request, *args, **kwargs):
        context = self.get_context_data()
        form = OrderForm(request.POST)
        if context['form'].is_valid():
            product = get_object_or_404(Product, name=self.kwargs['product_name'])
            customer = form.save()
            instance = Order.objects.create(customer=customer)
            instance.product.set(product)

        return super(TemplateView, self)

    def get_context_data(self, **kwargs):
        context = super(ProductDetailView, self).get_context_data(**kwargs)
        context['product'] = Product.objects.get(name=self.kwargs['product_name'])
        context['form'] = self.get_form()
        return context

Traceback

Traceback (most recent call last):
  File "D:\Python\Django\Django projects\Store\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "D:\Python\Django\Django projects\Store\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\Python\Django\Django projects\Store\venv\lib\site-packages\django\views\generic\base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "D:\Python\Django\Django projects\Store\venv\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "D:\Python\Django\Django projects\Store\products\views.py", line 69, in post
    instance.product.set(product)
  File "D:\Python\Django\Django projects\Store\venv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 992, in set
    objs = tuple(objs)
TypeError: 'Product' object is not iterable
Вернуться на верх