【发布时间】:2019-11-27 15:55:19
【问题描述】:
我正在尝试制作一个餐厅订购系统,当有人订购多种产品时,他/她可以选择选择的产品数量, 如果所有客户都是匿名的(没有注册选项)
sql子查询
我想提供默认值而不是手动选择
但我得到这个错误
ValueError at /orders-product/
Cannot assign "4": "ProductOrder.order" must be a "Ordering" instance.
有什么解决办法,或者如果有人知道更好的方法来实现它,我很感激
models.py
class Product(models.Model):
name = models.CharField(max_length=50)
price = models.PositiveIntegerField(default=1)
def __str__(self):
return self.name
class Ordering(models.Model):
id = models.AutoField(primary_key = True)
products = models.ManyToManyField(Product,through='ProductOrder')
@property
def total(self):
return self.productorder_set.aggregate(
price_sum=Sum(F('quantity') * F('product__price'), output_field=IntegerField()) )['price_sum']
class ProductOrder(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
order = models.ForeignKey(Ordering, on_delete=models.CASCADE,blank=True)
quantity = models.IntegerField(default=1)
def create_order(sender, instance, **kwargs):
instance.ordering.save()
#for create new instance from ordering model
pre_save.connect(create_order,sender=ProductOrder)
views.py
class ProductOrderCreate(CreateView):
form_class = ProductOrdering
model = ProductOrder
template_name = 'create_product_order.html'
success_url = '/'
def form_valid(self,form):
form.instance.order = list(Ordering.objects.values_list('pk' , flat=True).reverse().order_by('pk'))[0]
return super(ProductOrderCreate,self).form_valid(form)
【问题讨论】:
-
第一步是纠正缩进。