在Django中搜索外键字段可以使用__
(双下划线)操作符来实现。__
操作符用于在查询中访问模型之间的关系。
假设我们有两个模型,一个是Author
(作者)模型,另一个是Book
(书籍)模型,其中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=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
要在Book
模型中搜索外键字段author
,可以使用__
操作符来指定搜索条件。以下是一些常见的用法:
__exact
或简写为=
来进行精确匹配。books = Book.objects.filter(author__exact='John')
__iexact
来进行忽略大小写的匹配。books = Book.objects.filter(author__iexact='john')
__contains
来进行包含匹配。books = Book.objects.filter(author__contains='John')
__startswith
来进行开头匹配。books = Book.objects.filter(author__startswith='J')
__endswith
来进行结尾匹配。books = Book.objects.filter(author__endswith='n')
__in
来进行范围匹配。authors = ['John', 'Jane']
books = Book.objects.filter(author__in=authors)
__属性名
来进行外键字段的属性匹配。books = Book.objects.filter(author__name='John')
以上只是一些常见的用法,Django还提供了更多的查询操作符,可以根据具体需求选择合适的操作符。
领取专属 10元无门槛券
手把手带您无忧上云