根据M2M中的存在情况标注查询



模式:表A和表B之间存在M2M

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

如果B与A通过M2M连接,如何将QS0标注为True,如果不通过M2M连接,如何标注为False ?

感谢

给定下面的示例模型

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对象。

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.

相关内容

  • 没有找到相关文章

最新更新