Получить минимальное значение каждого запроса в фильтре - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть две таблицы: 1 продукт и 2-я цена. Вот так

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()

Здесь мне также нужна минимальная цена каждой операции из таблицы цен. Любая помощь по этому вопросу будет принята с благодарностью.

РЕДАКТИРОВАТЬ

Активность сейчас Может иметь групповую цену или одну цену. Так как я могу рассчитать как тип цены

1 Ответ

3 голосов
/ 10 апреля 2020

Мы можем сделать это, используя 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,
    )

Возможно, вы захотите прочитать официальную документацию Django по Агрегация . У них есть несколько таких примеров.

...