Django ORM:不在 table 中的所有项目
Django ORM: All items not in table
我有两个模型:
class SchedulerEvent(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=100)
description = models.TextField(blank=True, null=True)
class SchedulerEventReceipt(models.Model):
event = models.ForeignKey(SchedulerEvent, unique=True)
generated_on = models.DateTimeField()
paid_on = models.DateTimeField()
我正在尝试弄清楚如何获取不在特定用户的 SchedulerEventReceipt table 中的所有 SchedulerEvent 的列表。我有点以为你可以做这样的事情:
inner_qs = SchedulerEvent.objects.filter(user_id='1')
SchedulerEventReceipt.objects.filter(event__user_id='1').exclude(event__in=inner_qs)
但这不起作用。我有点不好意思承认我对 SQL 的了解还不够深入,无法弄清楚如何用 .raw()
做到这一点。
目标是找到当前在 SchedulerEventReceipt table 中没有条目的特定用户的所有 SchedulerEvent。
您正在过滤具有 user_id=1
的所有事件,并排除具有 user_id = 1
事件的所有事件,这会导致查询集为空。
试试这个:
qs = SchedulerEvent.objects.filter(user_id=<user_id>).exclude(schedulereventreceipt__event__user_id=<user_id>)
排除所有对应的SchedulerEventReceipt
,当前用户为user_id
我有两个模型:
class SchedulerEvent(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=100)
description = models.TextField(blank=True, null=True)
class SchedulerEventReceipt(models.Model):
event = models.ForeignKey(SchedulerEvent, unique=True)
generated_on = models.DateTimeField()
paid_on = models.DateTimeField()
我正在尝试弄清楚如何获取不在特定用户的 SchedulerEventReceipt table 中的所有 SchedulerEvent 的列表。我有点以为你可以做这样的事情:
inner_qs = SchedulerEvent.objects.filter(user_id='1')
SchedulerEventReceipt.objects.filter(event__user_id='1').exclude(event__in=inner_qs)
但这不起作用。我有点不好意思承认我对 SQL 的了解还不够深入,无法弄清楚如何用 .raw()
做到这一点。
目标是找到当前在 SchedulerEventReceipt table 中没有条目的特定用户的所有 SchedulerEvent。
您正在过滤具有 user_id=1
的所有事件,并排除具有 user_id = 1
事件的所有事件,这会导致查询集为空。
试试这个:
qs = SchedulerEvent.objects.filter(user_id=<user_id>).exclude(schedulereventreceipt__event__user_id=<user_id>)
排除所有对应的SchedulerEventReceipt
,当前用户为user_id