【发布时间】:2020-12-12 08:15:11
【问题描述】:
美好的一天, 我正在尝试构建一个创建订单并允许用户添加件的系统。以下是两种型号:
class Order(models.Model):
order_slug = models.SlugField(unique=True, blank=True)
machine = models.ForeignKey(Machine, blank=True,on_delete=models.DO_NOTHING)
production_type = models.CharField(choices=PRODUCTION_TYPE_CHOICES, max_length=30)
production_bond = models.CharField(choices=PRODUCTION_BOND_CHOICES, max_length=50)
profile = models.CharField(choices=PROFILE_CHOICES, max_length=50)
order_number = models.CharField(max_length=50)
order_colour = models.CharField(choices=ORDER_COLOUR_CHOICES, max_length=50)
order_finish = models.CharField(choices=ORDER_FINISH_CHOICES, max_length=10)
order_gauge = models.IntegerField(choices=ORDER_GAUGE_CHOICES)
order_width = models.IntegerField()
date_received = models.DateTimeField(default=datetime.now)
class Meta:
ordering = ["date_received", "-profile"]
def __str__(self):
return (str(self.order_slug))
class Piece(models.Model):
order = models.ForeignKey(Order,on_delete=models.CASCADE)
coil = models.ForeignKey(Cut_Material ,on_delete=models.CASCADE)
piece_length = models.DecimalField(max_digits=4, decimal_places=2)
prime_pieces = models.IntegerField()
reject_pieces = models.IntegerField()
coil_constant = models.IntegerField(blank=True)
def __str__(self):
return (str(self.piece_length))
class Meta:
ordering = ["-order","piece_length"]
这就是我想做的。
- 将 prime_pieces 乘以piece_length 得到每列的
running_meters - 我想按
order_gauge、order_number对这些片段进行分组,然后将running_meters相加。
建议的解决方案
piece = Piece.objects.all()
order = Order.objects.all()
第 1 步
rm_data = Piece.objects.annotate(running_meters=ExpressionWrapper(F('piece_length') * F('prime_pieces'), output_field=FloatField())).values()
第 2 步
我不确定
有人可以帮帮我吗?
【问题讨论】:
标签: django group-by django-annotate