获取此错误唯一约束失败:store_order.id

2024-04-24 03:10:26 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我尝试更新订单时,都会出现此错误

这是我的模型:

CHOICES = (
    ('Pending', 'Pending'),
    ('Processing', 'Processing'),
    ('Picked', 'Picked'),
    ('Shipped', 'Shipped'),
    ('Completed', 'Completed'),
)


class Order(models.Model):
    product = models.ForeignKey(
        Product, on_delete=models.CASCADE, related_name="product")
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    fname = models.CharField(max_length=100, null=True)
    address = models.CharField(max_length=1000, null=True)
    phone = models.CharField(max_length=12, null=True)
    price = models.IntegerField()
    date = models.DateField(datetime.datetime.today, null=True)
    status = models.CharField(
        max_length=100, blank=True, null=True, default="Unpaid", unique=True)
    order_status = models.CharField(
        max_length=100, choices=CHOICES, null=True, blank=True, default="In Review")
    payment_method = models.ForeignKey(
        PaymentMethod, on_delete=models.CASCADE, blank=True, null=True)

    total = models.IntegerField(null=True)

    def save(self, *args, **kwargs):
        self.total = self.quantity * self.price
        return super().save(self, *args, **kwargs)

我不知道我为什么会犯这种错误。请有人解释一下我为什么会犯这种错误,以及我如何解决这个问题

以下是我的订单视图:

class Checkout(View):
    def post(self, request):
        fname = request.POST.get('fname')
        phone = request.POST.get('phone')
        address = request.POST.get('address')
        cart = request.session.get('cart')
        customer = request.session.get('customer')
        products = Product.get_products_id(list(cart.keys()))

        for product in products:
            order = Order(customer=Customer(id=customer['id']), product=product, fname=fname,
                          price=product.price, phone=phone, address=address, quantity=cart.get(str(product.id)))

            order.save()

        request.session['cart'] = {}

        return redirect('user_orders')

Tags: selftruegetaddressmodelsrequestphonecustomer
1条回答
网友
1楼 · 发布于 2024-04-24 03:10:26

目前,您用于添加新签出的页面已断开,因为它没有 将新签出与任何特定用户关联。如果您尝试添加新签出, 您将看到错误消息IntegrityError以及NOTNULL约束 失败:store_order.id Django说您不能创建新的 签出而不指定签出的所有者字段的值

你能告诉我你想做什么吗?是否要添加新的签出

然后尝试使用以下命令:-

order.customer=request.customer

order.save()

相关问题 更多 >