首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在M2M中通过存在来标注查询

在M2M中通过存在来标注查询
EN

Stack Overflow用户
提问于 2021-02-27 03:15:37
回答 1查看 30关注 0票数 0

模式:表A和表B之间有M2M。

我有一些A对象的查询集QS0和一个B对象的确切实例。

如果B通过M2M与A连接,如何用True注释QS0,如果不是,如何注释False?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 03:28:39

给定下面的示例模型

代码语言:javascript
复制
from django.db import models

class ModelA(models.Model):
    title = models.CharField(max_length=100)


class ModelB(models.Model):
    title = models.CharField(max_length=100)
    a_objects = models.ManyToManyField(ModelA, related_name='b_objects')

从理论上讲,您应该能够通过以下方式注释ModelA对象的查询集:每个对象是否都链接到一个ModelB对象。

代码语言:javascript
复制
from django.db.models import Case, When, Value

b_object = ModelB.objects.get(id=some_id)

QS0 = ModelA.objects.annotate(is_linked_to_b=Case(When(b_objects__id=b_object, then=Value(True)), default=Value(False), output_field=BooleanField())

# QSO[some_index].is_linked_to_b should return either True or False.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66391571

复制
相关文章

相似问题

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