如何通过删除另一个模型具有 ForeignKey 关系的结果来过滤 Django 查询集?

How do I filter a Django Queryset by removing results in which another model has a ForeignKey relationship?

与以下 models.py ...

from django.db import models

class Notebook(models.Model):
    name = models.CharField(max_length=255)
    
    
class Entry(models.Model):
    notebook = models.ForeignKey(Notebook, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)

我如何只对 return 没有条目的笔记本编写过滤器?

您可以 .filter(…) Notebook 与:

Notebook.objects.filter(<b>entry=None</b>)

这是可行的,因为 Django 生成了 LEFT OUTER JOIN,因此我们只保留 entry 主键为 NULL/None.[=17 的记录=]