这可能是一个复杂的问题,但我会试着解释一下。
我有以下型号:
class Event(models.Model):
name = models.CharField(max_length=128)
class Order(models.Model):
requester = models.CharField(max_length=128)
taker = models.CharField(max_length=128)
email = models. EmailField()
phone = models.CharField(max_length=13)
class Picture(models.Model):
event = models.ForeignKey(Event)
image = models.ImageField(upload_to='media')
show_name = models.CharField(max_length=128, blank=True, null=True)
file_name = models.CharField(max_length=128, blank=True, null=True)
class OrderItem(models.Model):
order = models.ForeignKey(Order)
picture = models.ForeignKey(Picture)
amount = models.PositiveSmallIntegerField()
我需要获得属于一个事件的所有订单,但只需要一次。这可以通过图片来实现。如果图片在订单中,我需要事件。
示例:
Event 1:
Pic 1, Pic 2
Event 2:
Pic 3, Pic 4
Order 1:
Pic 1, Pic 2, Pic 3, Pic 4
Order 2:
Pic 2
Order 3:
Pic 1
我需要什么:
Event 1 has 3 Orders (Order 1, Order 2 and Order 3)
Event 2 has 1 Order (Order 1)
即使订单包含来自活动的多张图片,我只需要计算一次。
任何帮助将不胜感激。感谢。
答案 0 :(得分:2)
它与任何其他查询没有区别,只需使用双下划线来更改关系:
event = Event.objects.get(id=1)
orders = Order.objects.filter(orderitem__picture__event=event)
修改强>
计算您的订单:
order_count = orders.distinct().count()