如何在Django模型的外键中更改值?

时间:2019-09-12 18:57:04

标签: python django database model

Cart_Items,购物车,订购模型。我要在我的购物网站上订购商品后,价值增加了​​,但我无法访问它。

我试图通过    pr = Products.objects.all()    ci = Cart_Items.filter(product_id = pr)

我的模型。py:

订购型号:

audioElement.play()

产品型号:

   class Order(models.Model):
    user = models.ForeignKey(User,blank=True,null=True,on_delete=models.CASCADE)
    order_id  = models.CharField(  max_length=120,default="ABC",unique=True)
    cart  =   models.ForeignKey(Cart,on_delete=models.CASCADE)
    statu = models.CharField(max_length=120,choices=STATUS_CHOICES,default="Started")

Cart_Items模型:

    class Products(models.Model):
     title           =   models.CharField(max_length=250)
     order_qty       =   models.IntegerField(default=0)

购物车模型:

     class Cart_Items(models.Model):
          cart      =  models.ForeignKey('Cart',null=True,blank=True,on_delete=models.CASCADE)
         product_id = models.ForeignKey(Products,null=True,blank=True,on_delete=models.CASCADE)

我的views.py:

class Cart(models.Model):
    total      = models.IntegerField(default=0)
    timestamp  = models.DateTimeField(auto_now_add=True,auto_now=False)
    date       = models.DateTimeField(auto_now_add=False,auto_now=True)
    isPaid     = models.BooleanField(default=False)

我要订购的产品order_qty增加后,该怎么办? 我必须由Cart_items完成吗?还是还有另一种方法? 请帮助。

1 个答案:

答案 0 :(得分:0)

更改值后,您必须调用save方法:

 def add(request):
    cart_items=Cart_Items.objects.all()
     for item in cart_items:
        print(item.product_id.order_qty)
        item.product_id.order_qty +=1
        item.save()
     render(request,"home.html",{})

或者像@Wilem所说的那样,您可以通过订单中所有项目的数量来计算数量:

   Order.objects.all().count