所以我有这个模型
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)
发布于 2022-05-20 16:23:05
FilteredRelation对象的文档显示:
FilteredRelation与注释()一起使用,用于在执行联接时创建ON子句。
给定usernames,一个可迭代的用户名,并假设一个用户正在查找user外键在usernames中具有用户名且is_anonymous字段为False的ApplicationForHelp对象
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')
)https://stackoverflow.com/questions/72311710
复制相似问题