django自定义两张表关联条件查询
时间: 2023-08-11 17:05:27 浏览: 91
在 Django 中,如果你想要自定义两张表之间的关联条件查询,可以使用 `filter()`、`exclude()`、`annotate()`、`order_by()` 等方法。同时,你还可以使用 `Q()` 对象来进行复杂的查询操作。
以下是一个简单的例子,假设你有两张表 `Book` 和 `Author`,它们之间的关联条件是 `Book.author_id = Author.id`:
```python
from django.db.models import Q
# 查询所有书名中包含 "Django" 的书籍,并按照作者的出版日期逆序排序
Book.objects.filter(title__contains='Django').order_by('-author__publish_date')
# 查询所有出版日期在 2020 年之后的作者姓名
Author.objects.filter(publish_date__year__gt=2020).values_list('name', flat=True)
# 查询所有书名中包含 "Python" 或者作者姓名中包含 "John" 的书籍
Book.objects.filter(Q(title__contains='Python') | Q(author__name__contains='John'))
```
在这些例子中,我们使用了 `filter()` 方法来过滤查询结果,使用 `order_by()` 方法对查询结果进行排序,使用 `exclude()` 方法排除符合条件的结果,使用 `annotate()` 方法添加聚合查询结果等。同时,我们还使用了 `Q()` 对象来进行复杂的查询操作,对多个条件进行逻辑运算。
阅读全文