Django,用具有最低参数的多对多字段元素的id注释字段

标签 django model many-to-many annotate

我有以下型号:

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/

相关文章:

python - Django runserver 颜色输出

python - django 1.8-如果表单条目查询结果与数据库不匹配,则在同一页面上显示警报消息,而不是 "None"或引发异常页面

c++ - QItemSelectionModel::selectedIndexes() 崩溃

mysql - 如何使用 SQL SELECT 在单个报告中获取选择器和选择器的名称?

fluent-nhibernate - Fluent nhibernate映射问题: many to many self join with additional data

python - 带有 apache 和 wsgi 的 Django 抛出 ImportError

css - Django CSS 全站静态文件

php - 如何在 laravel 上不使用 get() 启动模型

model-view-controller - 如何在 MVC 模型中编写可重用的业务逻辑?

在更新所有者表时 hibernate 多对多删除连接表中的条目