我有两种型号:
class Subscription(models.Model):
name = models.CharField(max_length=100, unique=True)
class Email(models.Model):
email = models.EmailField(unique=True)
subscriptions = models.ManyToManyField(Subscription)
is_confirmed = models.BooleanField(default=False)
我需要通过django orm模拟sql查询
^{pr2}$因此,我可以通过获取可用订阅的完整列表来查看邮件是否已订阅每个订阅
我需要一些类似FilteredRelated的东西:
q = Subscription.objects.annotate(
is_subscribe=FilteredRelation(
'mail_subscriptions', condition=Q(mail_subscriptions__mail_id=10)
)
)
但是FilteredRelation不支持跨越关系字段的条件
根本不需要使用
FilteredRelation
执行此操作,您可以这样写:对于
mail_id
要筛选的Email
对象的id。在Django将构造一个如下所示的查询:
^{pr2}$反正不需要使用
LEFT OUTER JOIN
,因为您要检查mail_id
是否是一个特定的id
,因此INNER JOIN
将产生相同的集。在请注意,您使用了} [Django-doc]参数指定一个模型。在
ManyToManyField
,Django在两个实体之间创建了一个表,但是您不能访问该表,除非您使用^{您还可以用
is_subscribed
来注释Subscription
,例如:这将导致如下查询:
相关问题 更多 >
编程相关推荐