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