【问题标题】:How to change a value from in a django model while its foreign key?如何在 django 模型中更改其外键的值?
【发布时间】:2020-01-14 16:52:03
【问题描述】:

Cart_Items , Cart , Order models 。我想要我的购物网站,在订购产品后,价值增加,但我无法访问它。

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

我的模型.py:

订购型号:

   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")

产品型号:

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

Cart_Items 模型:

     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)

购物车型号:

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)

我的意见.py:

    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
         render(request,"home.html",{})

我想在订购产品后 order_qty 增加,我该怎么做? 我必须通过 Cart_items 来做吗?还是有其他方法? 请帮忙。

【问题讨论】:

  • 通常order_quantity保存在字段中。这是由相关CartItems 的数量计算得出的。
  • 您应该重命名模型以使用 PascalCase 和单数形式,例如 CartItem

标签: python django database model


【解决方案1】:

你必须调用保存方法,在你改变一个值后:

 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

【讨论】:

  • 嗨,我不想添加订单数量,我想从 Products 模型中添加 order_quantity。但是当我下订单时,我只能通过购物车项目访问购物车中的选定项目
  • 那么,你的意思是你想抢占所有产品的数量并增加它们?尝试覆盖订单、产品或购物车项目的保存方法。有了这个,当你保存你想要的模型时,你就可以得到模型,对他或另一个人做任何你想做的事情。
  • 这里是 senario :在我将 3 个产品添加到我的购物车(例如)之后,这些项目被添加到我的 cart_items,在我完成订单流程之后,我想添加 1 到我的产品模型字段(这是用来了解必须购买的产品)。我的 Products 模型中有一个字段,我希望 Cart_Items 模型(我的产品)中的每个项目将其增加到 1。我该怎么做?任何人都可以为我制作一个示例代码吗?
猜你喜欢
  • 1970-01-01
  • 2012-04-28
  • 2017-09-17
  • 2021-04-03
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2020-07-10
  • 2013-09-29
相关资源
最近更新 更多