📅  最后修改于: 2023-12-03 15:24:09.499000             🧑  作者: Mango
在 Django 中,外键是一种非常有用的关系类型,可用于在不同数据表之间建立引用关系。在某些情况下,我们需要使用外键过滤查询集,并基于外键中的特定属性进行过滤。本文将介绍如何在 Django 中使用外键过滤查询集。
假设我们有两个相关联的模型:Author
和 Book
。 Author
模型拥有许多书籍,因此我们将在 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 中使用外键过滤查询集非常简单。在本文中,我们了解了如何在外键属性上使用过滤器和排除器,以查找和排除一组数据。