gpt4 book ai didi

Django order_by 多对多关系

转载 作者:行者123 更新时间:2023-12-04 20:51:33 24 4
gpt4 key购买 nike

如何根据多对多关系条件是否为真来对查询集进行排序?

class Publication(models.Model):
name = models.CharField(max_length=100)
books = models.ManyToManyField(Book)

class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=100)

我想按照

的方式创建一个查询集
Publication.objects.all().order_by('books__name'='Awesome Book')

因此第一项是 Publication,其中包含一本名为“Awesome Book”的 Book,最后您拥有所有 Publication 的 没有这本书。

最佳答案

这是一种可行的方法,创建一个新的字段来排序,将您的逻辑表达式映射到一个数值。

from django.db.models import Case, When, Value, IntegerField

Publication.objects.annotate(
ordering=Case(
When(books__name="Awesome Book", then=Value(0)),
default=Value(1),
output_field=IntegerField(),
)
).order_by("ordering")

关于Django order_by 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47146779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com