我有两个表1产品和2nd价格。像这样
class Activity(models.Model):
activityName = models.CharField(max_length=50 , null=False, blank=False)
activityId = models.CharField(max_length=20, null=True, blank=True)
class PerPersonTire(models.Model):
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
name= models.CharField(max_length=100 , null=True , blank=True)
minNumerofParticipents = models.IntegerField(default=0)
price=models.IntegerField(default=0)
class groupTire(models.Model):
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
name= models.CharField(max_length=100 , null=True , blank=True)
minNumerofParticipents = models.IntegerField(default=0)
price=models.IntegerField(default=0)
现在情况是在每项活动中外键都有很多价格。因此,当我查询“活动”时,我也需要该表中的最低价格。
喜欢
Activity.object.all()
在这里,我还需要价格表中每个活动的最低价格。任何帮助对此将不胜感激。
编辑
现在的活动可以有团体价格或单一价格。那么我该如何计算两种价格
答案 0 :(得分:3)
我们可以使用annotate
来做到这一点:
from django.db.models import Min
activities = Activity.object.all().annotate(
min_person_price=Min('perpersontire__price'),
min_group_price=Min('grouptire__price'),
)
for activity in activities:
print(
activity.activityName,
activity.min_person_price,
acitivy.min_group_price,
)
您可能想阅读Aggregation上Django的官方文档。他们有多个这样的例子。