首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在django中搜索外键字段

在Django中搜索外键字段可以使用__(双下划线)操作符来实现。__操作符用于在查询中访问模型之间的关系。

假设我们有两个模型,一个是Author(作者)模型,另一个是Book(书籍)模型,其中Book模型有一个外键字段指向Author模型:

代码语言:txt
复制
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,可以使用__操作符来指定搜索条件。以下是一些常见的用法:

  1. 精确匹配:使用__exact或简写为=来进行精确匹配。
代码语言:txt
复制
books = Book.objects.filter(author__exact='John')
  1. 忽略大小写匹配:使用__iexact来进行忽略大小写的匹配。
代码语言:txt
复制
books = Book.objects.filter(author__iexact='john')
  1. 包含匹配:使用__contains来进行包含匹配。
代码语言:txt
复制
books = Book.objects.filter(author__contains='John')
  1. 开头匹配:使用__startswith来进行开头匹配。
代码语言:txt
复制
books = Book.objects.filter(author__startswith='J')
  1. 结尾匹配:使用__endswith来进行结尾匹配。
代码语言:txt
复制
books = Book.objects.filter(author__endswith='n')
  1. 范围匹配:使用__in来进行范围匹配。
代码语言:txt
复制
authors = ['John', 'Jane']
books = Book.objects.filter(author__in=authors)
  1. 外键字段的属性匹配:使用__属性名来进行外键字段的属性匹配。
代码语言:txt
复制
books = Book.objects.filter(author__name='John')

以上只是一些常见的用法,Django还提供了更多的查询操作符,可以根据具体需求选择合适的操作符。

推荐的腾讯云相关产品:腾讯云数据库(TencentDB),腾讯云云服务器(CVM),腾讯云对象存储(COS)等。你可以在腾讯云官网上找到这些产品的详细介绍和文档。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django学习-第七讲:django 的常用字段字段属性,和表关系、操作

和表关系 MySQL,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持约束的。的存在使得ORM框架在处理表关系的时候异常的强大。...因此这里我们首先来介绍下Django的使用。 类定义为class ForeignKey(to,on_delete,**options)。...因此底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个,记录着对应的作者的主键。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。 4.SET_DEFAULT:设置默认值。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 5.SET():如果的那条数据被删除了。

3.9K30

django开发取消约束的实现

# setting设置 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给关系传值...''' 两种方法 教室ClassRoom和教室编号ClassNumber 字段django类里名(room_number)在数据库名(room_number_id) '''      # 一.1...(数据库的字段名字room_number_id)的值,将相对应的值直接赋值给该字段      class_number = ClassNumber.object.get("id=1").room_number...字段django类里名(room_number)在数据库名(room_number_id)      c.save() return HttpResponse("ojbk") 多对一: 类似一对一...s.teacher.remove(x) return HttpResponse("ojbk") 以上这篇django实现在开发取消约束就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.6K10

django admin配置搜索域是一个时的处理方法

python 2.7.11 django 1.8.4 错误内容:related Field has invalid lookup: icontains 我原来默认认为处理搜索的时候,django...会自动将该的行数据以str()化之后进行搜索,但其实并不是这样的,如果将加入到搜索域中,需要明确写出来。...,哪些字段显示,在这里 remark 字段将不显示 admin.site.register(Category, CategoryAdmin) [ 说明 ] 使用 Django admin 系统搜索时可能会出现...不应该只是一个model,而该是另一个表的明确的一个字段。 所以我们需要指定特定的字段 “本表字段__所在表需查询字段”。...admin配置搜索域是一个时的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.8K20

Django基表的创建、字段属性简介、脏数据概念、子序列化

如两张表建立了一对一字段A表,那么先往B表写数据就更合理。...假设图书管理系统书、出版社、作者、作者详细信息四张表之间的关系如下: """ 表关系 1)Book 和 Publish 一对多:多的一方 Book 2)Book 和 Author 多对多:查询频率高的一方...Book 3)Author 和 AuthorDetail 一对一:要根据实际需求建立合理的位置 AuthorDetail(AuthorDetail方作者就可以没有AuthorDetail,...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外设置反向查询的字段名:正向找字段名,反向找related_name...值,related_name的默认值是表名小写 + _set,这就是为什么Django跨表反向查询时我们使用表名小写 + _set去查另一张表的数据。

4.3K30

Django(15)和表关系

如果的那条数据被删除了,那么本条数据上就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。 SET_DEFAULT:设置默认值。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 SET():如果的那条数据被删除了。...那么将会获取SET函数的值来作为这个的值。SET函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。...注意:以上这些选项只是Django级别的,数据级别依旧是RESTRICT! 表关系 表之间的关系都是通过来进行关联的。而表之间的关系,无非就是三种关系:一对一、一对多、多对多等。...如果不想使用Django默认的引用属性名字。那么可以OneToOneField添加一个related_name参数。

2.1K40

django 引用自身和on_delete参数

如果的那条数据被删除了,那么本条数据上就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。 SET_DEFAULT:设置默认值。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,== 前提是要指定这个字段一个默认值 ==。 SET():如果的那条数据被删除了。...、update的时候,子表会将关联记录的字段所在列设为null,所以注意在设计子表时不能设为not null; 为什么django可以是用不同的约束去操作数据库呢。...比如 django on_delete=CASCADE, 但是数据库的约束是RESTRICT....进行删除A表数据时,发现被约束着,使数据不能被删除,则django会先去删除约束的B表数据,然后再来删除A表数据。

1.3K20

django 2.x版本models.ForeignKey()说明介绍

2、to_field表示健关联的主键 3、on_delete有多个选项 django2.0后,定义和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错...SET_NULL:此值设置,会把设置为null,前提是允许为null。 SET_DEFAULT:此值设置,会把设置为的默认值。 SET():此值设置,会调用外面的值,可以是一个函数。...当我们查询一个组有那些用户的时候,就会用到当前的健, 创建记录 并且,class定义了foreignKey之后,group还不存在的同时,user表也因为约束的原因,不能被进行创建 删除记录 并且...,class定义了foreignKey之后,user记录存在的同时,group表的记录也因为约束的原因,不能被进行删除 补充知识:owner = models.ForeignKey(User)...2.x版本models.ForeignKey()说明介绍就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.1K20

Django的AutoField字段使用

补充知识:Djangomodels下常用Field以及字段参数 一、常见的FieldType数据库字段类型 1、AutoField:自增Field域,自动增加的一个数据库字段类型,例如id字段就可以使用该数据类型...三、字段参数 1、null:用于表示某个字段可以为空 2、unique:如果设置为unique=True则该字段在此表必须是唯一的 3、db_index:如果db_index=True则代表这为此字段设置索引...,设置:models.SET(值) b、与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象) 5、db_constraint:是否在数据库创建约束,默认为True,db_constraint...一般使用在建立数据表连接关系当中(例如创建),如果使用False,则是限制了表之间没有关联,达到了软连接的效果 五、元信息 ORM对应的类里面包含另一个Meta类,而Meta类封装了一些数据库的信息.../en/dev/ref/models/fields/ 以上这篇Django的AutoField字段使用就是小编分享给大家的全部内容了,希望能给大家一个参考。

6.3K20

Django 2.2文档系列】Model 的on_delete参数用法

场景 我们用Django的Model时,有时候需要关联。关联时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...Django会模拟SQL约束的行为,删除此条数据时,同事删除外关联的对象。...models.SET_NULL 设置关联的内容为null。只有设置了null=True时可用。当数据被删除时,被关联的内容被设置为null。...models.SET_DEFAULT 将的值设置为默认值。必须设置有默认值 。 models.SET()将SET()设置的值作为的值 ,如果传递了callable,则调用它的结果。...如果后端数据库有强制关联操作,这是容易报错:IntegrityError,除非你在数据库手动添加了SQL的ON DELETE约束。

1.9K10
领券