📜  如何在 django 中使用外键过滤查询集 - Python (1)

📅  最后修改于: 2023-12-03 15:24:09.499000             🧑  作者: Mango

如何在 Django 中使用外键过滤查询集 - Python

在 Django 中,外键是一种非常有用的关系类型,可用于在不同数据表之间建立引用关系。在某些情况下,我们需要使用外键过滤查询集,并基于外键中的特定属性进行过滤。本文将介绍如何在 Django 中使用外键过滤查询集。

假设我们有两个相关联的模型:AuthorBookAuthor 模型拥有许多书籍,因此我们将在 Book 模型中添加一个外键,以引用其相关的 Author 对象。以下是模型类的示例代码:

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

现在,我们想要过滤所有书籍,其中 Author 的名称为 'William Shakespeare'。我们可以使用 filter() 方法,该方法允许我们使用外键属性进行过滤。以下是示例代码:

books = Book.objects.filter(author__name='William Shakespeare')

在此示例中,我们使用双下划线符号 (__) 来表示外键属性。author__name 意味着我们正在访问 Book 模型中的 author 对象的 name 属性。

我们还可以使用 exclude() 方法排除我们不想要的特定书籍。以下是示例代码:

books = Book.objects.exclude(author__name='William Shakespeare')

同样,在上面的示例中,我们使用 exclude() 方法,它将排除 Author 名称为 'William Shakespeare' 的所有书籍。

总之,在 Django 中使用外键过滤查询集非常简单。在本文中,我们了解了如何在外键属性上使用过滤器和排除器,以查找和排除一组数据。