首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改django-orm select_related()中的表达式

如何更改django-orm select_related()中的表达式
EN

Stack Overflow用户
提问于 2022-05-19 22:27:12
回答 1查看 45关注 0票数 0

所以我有这个模型

代码语言:javascript
复制
class ApplicationForHelp(BaseModel):
    user = models.ForeignKey(User, related_name="applications", on_delete=models.CASCADE)
    tags = models.ManyToManyField(TagsForApplication, related_name="applications")
    title = models.CharField(max_length=50)
    description = models.TextField()
    is_anonymous = models.BooleanField(default=False)
    place = models.TextField(null=True)

和用户模型

所以如果ApplicationForHelp.objects.filter().select_related('user')

它所做的:左联接ON application.user_id = user.id

我想要的:左连接(application.user_id = user.id和user.id)

EN

回答 1

Stack Overflow用户

发布于 2022-05-20 16:23:05

FilteredRelation对象的文档显示:

FilteredRelation与注释()一起使用,用于在执行联接时创建ON子句。

给定usernames,一个可迭代的用户名,并假设一个用户正在查找user外键在usernames中具有用户名且is_anonymous字段为FalseApplicationForHelp对象

代码语言:javascript
复制
from django.db.models import FilteredRelation, Q
apps = (
    ApplicationForHelp.objects
    .annotate(
        not_anonymous=FilteredRelation(
            'user',
            condition=Q(is_anonymous=False)
        )
     )
    .filter(not_anonymous__username__in=usernames)
    .select_related('user')
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72311710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档