如何将另一个对象或用户连接到Django视图add_to_cart

问题描述

我正在尝试开发一个电子通讯网站。父母为孩子们买东西的地方。父母将孩子添加到他/她的个人资料中:

class Kid(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    first_name =  models.CharField(max_length=120)
    slug = slug = models.SlugField(unique=True)
    last_name =  models.CharField(max_length=120)
    province = models.CharField(choices=PROVINCE_CHOICES,max_length=2,default='AB')
    city = models.CharField(max_length=120)
    school =  models.CharField(max_length=120)
    grade = models.CharField(max_length=120)
    teacher = models.CharField(max_length=120)

此外,我有一个OrderItem和Order类,它们来自一个教程,并且可以正常工作。我已经将孩子对象添加到OrderItem,也许我也需要将其添加到Order。

 class OrderItem(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    kid = models.ForeignKey(Kid,on_delete=models.CASCADE)
    ordered = models.BooleanField(default=False)
    item = models.ForeignKey(MenuItem,on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)

    def __str__(self):
        return f'{self.quantity} of {self.item.title}' 
    

class Order(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    items = models.ManyToManyField(OrderItem)
    order_date = models.DateTimeField(auto_now_add=True)
    event_date = models.DateTimeField()
    ordered = models.BooleanField(default=False)

在视图中,我有一个定义 add_to_cart

def add_to_cart(request,slug):
    item = get_object_or_404(MenuItem,slug=slug)
    order_item,created = OrderItem.objects.get_or_create(
        item=item,user=request.user,ordered=False
        )
    order_qs = Order.objects.filter(
        user=request.user,ordered=False
        )
    if order_qs.exists():
        order = order_qs[0]
        if order.items.filter(item__slug=item.slug).exists():
            order_item.quantity +=1
            order_item.save()
            messages.info(request,"Quantity of " + item.title + " was updated.")
            return redirect('/menu/')
        else:
            order.items.add(order_item)
            messages.info(request,item.title +" was added to your cart.")
            return redirect('/menu/')
    else:
        event_date = timezone.now()
        order = Order.objects.create(
            user=request.user,event_date=event_date
            )
        order.items.add(order_item)
        messages.info(request,item.title +" was added to your cart.")
        return redirect('/menu/')

我认为我需要在以下位置添加孩子对象:

    order_item,**kid=???
        ordered=False
        )

但不知道如何。 如果我的孩子页面上有一个发出订单按钮,它会打开一个东西列表,那会很好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)