帮我写个django中的联表查询的例子使用ForeignKey
时间: 2024-02-11 16:07:06 浏览: 116
好的,以下是一个使用 ForeignKey 字段进行联表查询的例子:
假设我们有两个模型,一个是 Book(书籍)模型,另一个是 Publisher(出版社)模型,它们之间通过外键建立了一对多的关系。也就是说,一个出版社可以出版多本书,但一本书只能属于一个出版社。
```python
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=100)
city = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
```
现在,我们想要查询所有出版社位于纽约的书籍。我们可以使用双下划线语法来查询关联模型的属性,如下所示:
```python
books = Book.objects.filter(publisher__city='New York')
```
在这个查询中,我们使用了双下划线语法来查询 Book 模型中所有出版社位于纽约的书籍。首先,我们在 publisher 后面使用双下划线来访问 Publisher 模型的属性。然后,我们使用 city='New York' 来查询所有位于纽约的出版社。最后,我们将查询结果存储在 books 变量中。
您还可以通过多级关联查询来访问更深层次的关联模型。例如,如果我们想要查询所有姓氏为 Smith 的作者的出版社位于纽约的书籍,可以使用以下查询:
```python
books = Book.objects.filter(authors__name__startswith='Smith', authors__book__publisher__city='New York')
```
在这个查询中,我们通过 authors__book__publisher__city 来访问 Publisher 模型的 city 属性。这样,我们就可以查询所有姓氏为 Smith 的作者的出版社位于纽约的书籍。
希望这个例子可以帮助您理解 Django 中使用 ForeignKey 进行联表查询。
阅读全文