我有以下型号:
from django.db import models
class Topping(models.Model):
# ...
price = models.IntegerField()
class Pizza(models.Model):
# ...
toppings = models.ManyToManyField(Topping)
我需要得到以下查询:
my_query = Pizza.objects.all().annotate(
topping_with_min_price="get id of topping with the minimal price")
那么,如何获得呢?
最佳答案
您可以使用子查询
:
from django.db.models import <strong>OuterRef, Subquery</strong>
my_query = Pizza.objects.annotate(
topping_with_min_price=Subquery(
<strong>Topping.objects.filter(
pizza=OuterRef('pk')
).order_by('price').values('pk')[:1]</strong>
)
)
关于Django,用具有最低参数的多对多字段元素的id注释字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68467435/