3 连接模型的查询集
QuerySet for 3 Connected Model
我的电子商务项目有一个树模型。想要显示哪些产品以及有多少等待包装。我只想显示新订单的产品和数量。
例如:
一个产品 - 119
B 产品 - 6
我的模型是:
CHOICES = (
(1, _("New Orders")),
(9, _("Canceled")),
(10, _("Completed")),
)
class Orders(models.Model):
order_no = models.CharField(max_length=80)
order_date = models.DateField(blank=True,null=True)
order_status = models.IntegerField(choices=CHOICES, default=1)
class Meta:
verbose_name = "Order"
verbose_name_plural = "Orders"
ordering = ['order_date']
def __str__(self):
return self.order_no
class Products(models.Model):
product_name = models.CharField(max_length=250,blank=True,null=True)
barkod = models.CharField(max_length=60,blank=True,null=True)
raf = models.CharField(max_length=15,blank=True,null=True)
tax = models.DecimalField(blank=True,null=True, max_digits=5, decimal_places=0)
class Meta:
verbose_name = "Product"
verbose_name_plural = "Products"
ordering = ['pk']
def __str__(self):
return self.product_name
class OrderItems(models.Model):
order = models.ForeignKey(Orders,on_delete=models.CASCADE,related_name='order')
product = models.ForeignKey(Products,on_delete=models.PROTECT,related_name='product_order')
quantity = models.CharField(max_length=6,blank=True,null=True)
price = models.DecimalField(blank=True,null=True, max_digits=9, decimal_places=2)
class Meta:
verbose_name = "Item"
verbose_name_plural = "Items"
ordering = ['-pk']
def __str__(self):
return self.order.order_no
有3个模型相互连接。我需要新订单中的产品及其总量。
我找不到正确的方法来做到这一点。有什么建议吗?
你可以这样尝试 group_by
:
from django.db.models import Sum
OrderItems.objects.filter(order__order_status=1).values('product').annotate(total=Sum('quantity')).values('product__name', 'total')
我的电子商务项目有一个树模型。想要显示哪些产品以及有多少等待包装。我只想显示新订单的产品和数量。
例如:
一个产品 - 119 B 产品 - 6
我的模型是:
CHOICES = (
(1, _("New Orders")),
(9, _("Canceled")),
(10, _("Completed")),
)
class Orders(models.Model):
order_no = models.CharField(max_length=80)
order_date = models.DateField(blank=True,null=True)
order_status = models.IntegerField(choices=CHOICES, default=1)
class Meta:
verbose_name = "Order"
verbose_name_plural = "Orders"
ordering = ['order_date']
def __str__(self):
return self.order_no
class Products(models.Model):
product_name = models.CharField(max_length=250,blank=True,null=True)
barkod = models.CharField(max_length=60,blank=True,null=True)
raf = models.CharField(max_length=15,blank=True,null=True)
tax = models.DecimalField(blank=True,null=True, max_digits=5, decimal_places=0)
class Meta:
verbose_name = "Product"
verbose_name_plural = "Products"
ordering = ['pk']
def __str__(self):
return self.product_name
class OrderItems(models.Model):
order = models.ForeignKey(Orders,on_delete=models.CASCADE,related_name='order')
product = models.ForeignKey(Products,on_delete=models.PROTECT,related_name='product_order')
quantity = models.CharField(max_length=6,blank=True,null=True)
price = models.DecimalField(blank=True,null=True, max_digits=9, decimal_places=2)
class Meta:
verbose_name = "Item"
verbose_name_plural = "Items"
ordering = ['-pk']
def __str__(self):
return self.order.order_no
有3个模型相互连接。我需要新订单中的产品及其总量。 我找不到正确的方法来做到这一点。有什么建议吗?
你可以这样尝试 group_by
:
from django.db.models import Sum
OrderItems.objects.filter(order__order_status=1).values('product').annotate(total=Sum('quantity')).values('product__name', 'total')