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

在Django我有一个复杂的查询,我只需要通过外键的唯一值,这可能吗?

在Django中,如果您需要执行复杂的查询,可以使用Django的查询方法(filters)和自定义查询(custom queries)。但是,通过外键的唯一值来过滤数据可能无法满足您的需求。

虽然Django没有内置的方法来执行这种类型的查询,但是您可以使用Python的内置函数来解决这个问题。您可以使用Model.objects.raw()方法来执行原始SQL查询,并使用自定义SQL语句来过滤数据。

例如,在Django的admin中使用自定义查询:

代码语言:python
代码运行次数:0
复制
from django.contrib.admin.models import LogEntry

def my_custom_query(modeladmin, request, queryset):
    # 执行复杂的查询,例如从其他模型中筛选数据
    # ...

admin.site.register(LogEntry)

然后,在Django的admin中使用my_custom_query方法来执行自定义查询:

代码语言:python
代码运行次数:0
复制
LogEntry.objects.raw(my_custom_query('my_modeladmin', 'get_queryset'))

请注意,这种方法需要一些额外的配置和自定义代码,并且可能不如直接在Django中使用SQL查询那么易于管理。因此,您需要根据您的具体需求来决定使用哪种方法。

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

相关·内容

产品说,只需要一个亿点复杂查询界面

有的时候,你需要动态构建一个比较复杂查询条件,传入数据库中进行查询。而条件本身可能来自前端请求或者配置文件。那么这个时候,表达式树,就可以帮助到你。...本文我们将通过几个简短示例来了解如何完成这些操作。 你也可能接到过这些需求 今天我们看看表达式树如何实现这些需求。 一切都还要从盘古开天开始说起 以下是一个简单单元测试用例。...这是一个自定义扩展方法,你可以通过 ObjectVisitor 来引入这个方法。 限于篇幅,我们此处不能展开谈 Unwrap 实现。我们只需要关注和前一个示例中注释不同即可。...最后,我们把子表达式创建通过一点点小技巧。...通过外部参数来决定。就基本完成了一个多 And 比较查询条件动态构建。

17620

产品说,只需要一个亿点复杂查询界面

有的时候,你需要动态构建一个比较复杂查询条件,传入数据库中进行查询。而条件本身可能来自前端请求或者配置文件。那么这个时候,表达式树,就可以帮助到你。...本文我们将通过几个简短示例来了解如何完成这些操作。 你也可能接到过这些需求 从模型进行查询 基于配置查询 今天我们看看表达式树如何实现这些需求。...这是一个自定义扩展方法,你可以通过 ObjectVisitor[1] 来引入这个方法。 限于篇幅,我们此处不能展开谈 Unwrap 实现。我们只需要关注和前一个示例中注释不同即可。...最后,我们把子表达式创建通过一点点小技巧。...通过外部参数来决定。就基本完成了一个多 And 比较查询条件动态构建。

1.1K00
  • django 1.8 官方文档翻译: 2-6-4 数据库访问优化

    注意,设计最好索引方案是一个复杂、数据库相关的话题,它取决于你应用细节。持有索引副作用可能会超过查询速度上任何收益。 合理使用字段类型。 我们假设你已经完成了上面这些显而易见事情。...一次性检索你需要任何东西 不同位置多次访问数据库,一次获取一个数据集,通常来说不如在一次查询中获取它们更高效。如果你一个循环中执行查询尤其重要。...可能你会做很多次数据库查询,但只需要一次就够了。...直接使用 如果你仅仅需要当中一个,要使用对象上你已经取得,而不是获取整个关联对象再得到它主键。...如果一个模型具有默认顺序(Meta.ordering),并且你并不需要它,通过查询集上无参调用order_by() 来移除它。 向你数据库添加索引可能有助于提升排序性能。

    1.1K30

    Django学习笔记之Django QuerySet方法

    一般情况下,我们Django项目需要操作QuerySet时一些常用方法已经满足我们日常大多数需求,比如get、filter、exclude、delete神马感觉就已经无所不能了,但随着项目但业务逻辑越来越复杂...,annotate返回一个包含注解queryset,而aggregate则单独返回注解,返回类型是一个dict,当然,这种方式文档中叫做聚合查询,具体使用如下: >>> q = Blog.objects.aggregate...读文档时就感觉。。后来发现是酱紫滴,一个复杂滴model可能你从数据库中读出后根本不需要某些字段,读了又浪费时间浪费空间,怎么办?对!...嗯,实话告诉你,默认情况下调用delete()是会删除所有有关对象(是不是突然感觉自己之前代码里坑了)所以我们需要详细说说这个方法,如何做才能让他不删除对应或者说按照我们想象方式进行删除呢...,还是放一下: q = Blog.objects.annotate(Count('entry')) 13、强大Q查询与F查询: 嗯,这一部分先留着,总之告诉你很腻害就是了,可以做很复杂查询,先放个例子

    58250

    程序员硬核“年终大扫除”,清理了数据库 70GB 空间

    : 可以看到,Deduplication对唯一索引没有影响,但对重复索引却有重大影响。...从索引中排除空是否总是好处?NULL和任何其他一样有意义。如果查询使用了 IS NULL,这些查询可能会受益于索引NULL。 这个方法仅对空有用?...使用部分索引排除不经常查询或根本不查询可能有益于任何,而不仅仅是空。NULL通常表示缺少,我们没有很多查询搜索空,因此将它们从索引中排除是有意义。 你最终如何清除超过20GB空间呢?...为了防止这类隐式功不引起我们注意情况下潜入索引,我们创建了Django检查来强制自己始终显式设置db_index。...Django生成迁移将首先禁用FK约束(如果该字段是),则删除现有的完整索引并创建新部分索引。执行此迁移可能会导致停机和性能下降,我们实际上不会运行它。 手动创建部分索引:使用Django.

    2.2K10

    06.Django基础五之django模型层(二)多表操作

    一 创建模型 表和表之间关系     一对一、多对一、多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加约束和不加约束区别,一对一约束是一对多约束上加上唯一约束...字段 ForeignKey 一个 null=True 设置(它允许接受空 NULL),你可以赋给它空 None 。   ...与之关联设置为可执行对象返回,设置:models.SET(可执行对象) ForeignKeydb_contraint参数 关系和约束大家要搞清楚,不加能不能表示两个表之间关系啊,当然可以...但是我们就不能使用ORM相关方法了,所以我们单纯换成一个其他字段类型,只是单纯存着另外一个关联表主键值是不能使用ORM方法。...").first() # Author表中主键为1纪录   #有人可能会说,我们可以直接给第三张表添加数据啊,这个自动生成第三张表你能通过models获取到,是获取不到,用不了,当然如果你知道了这个表名字

    2.7K20

    一篇文章带你了解Django ORM操作(高端篇)

    分组操作 分组操作,就是将某一列,相同进行压缩,然后就可以得出压缩数量。 如果压缩,还可以取出外详细信息。 示例:查询出每个出版社出版数量。...通过研究表结构发现,每出版书,都在book表中记录,并且每本书会一个出版社id。 ? 如果我们能对出版社id进行压缩,然后再求出压缩出版社id里面对应数量。 啧啧,这不就出来了吗?...分组获取字段信息 上述确实可以通过分组实现了功能。 但是上述只能获取出版社id,并不能获取出版社名啥,但是如何获取压缩字段详细信息呢?...分组再筛选 分组再筛选本质就是原生sqlgroup by .. having,将压缩完数据进行条件判断。 但是对压缩数据进行判断只能通过having。...F查询 有时候,我们可能有这样需求,就是两个列之间进行比较。 比如经典问题,一个商品,找到收藏数大于销量商品等之类两列进行比较需求。 示例:查询book表,评论数小于收藏数数据。

    1.2K11

    Web | Django 与数据库交互,你需要知道 9 个技巧

    本文中,将分享 Django 中使用数据库 9 个技巧。 1....意味着,当用户执行长时间运行操作时,工作进程会被阻塞,完成之前,其他人无法使用它。 应该没有人真正在生产中只用一个工作进程来运行 Django,但是我们仍然希望确保一个查询不会浪费太多资源太久。...索引(FK Indexes) 创建模型时,Django 会在所有上创建一个 B-Tree 索引,它开销可能相当大,而且有时候并不很必要。...M2M 模型中一个常见模式是两个字段一起作为一个唯一约束。...并不是,数据库为特定用例提供其他类型索引也蛮多。 从 Django 1.11 开始,一个 Meta 选项用于模型上创建索引。给了我们探索其他类型索引机会。

    2.8K40

    Django 学习笔记之模型高级用法(上)

    自己近期也总做了下总结,将花大概两篇篇幅来分享下模型一些高级用法。 如果想熟悉 Django 用法,认为应该一开始要熟悉一些细节用法,后面再了解 Django 实现原理。...2.1 ForeignKey 1) on_delete Django 2.0 中,设置时需要添加一个 on_delete选项。本身涉及到两个表数据,况且在数据库中是有约束行为。...SET_DEFAULT: 置默认,删除时候,字段设置为默认,所以定义时候注意加上一个默认。 SET(): 自定义对应实体。...2)limit_choices_to 该参数用于限制所能关联对象,只能用于 Django ModelForm(Django表单模块)和 admin 后台,对其它场合无限制功能。...4) related_name 用于关联对象反向引用模型名称。主要用于反向查询,即源模型实例通过管理器返回第一个模型所有实例。

    2K30

    Django篇(一)

    Django中内置ORM框架。运用这个框架让我们操作数据库时候更简单。 不用再写一些简单Sql语句,通过创建一个类,来一一对应数据库中表字段。 通过操作类来操作数据库中表。...# name name = models.CharField(max_length=20) # sid = models.ForeignKey('stuinfo') 多表联查...,我们通过查询 通过第一张表查询第二张表 s1 = student.objects.get(id = 1) # 这样就查询到 nid = 1 person表了,表名后加_set s1.person_set.all...= student.objects.get(id = 1) p2 = person() p2.name = '小花' # 需要赋值一个对象 p2.sid = s1 # 查询键值 赋值是一个对象,...p3 = person.objects.get(id = 1) # 这样才能查询到id字典名后加_id p3.nid_id 后台管理(admin) Django给我们提供了很快生成后台管理页面。

    1.1K30

    《深入浅出SQL》问答录

    如果只有一张白表,为什么还要创建数据库? A:SQL语言要求所有的表都放在数据库中,当然理由。...办法确定已经连接到父了吗? A:为NULL,表示父表中没有相符主键。但我们可以确认包含有意义、已经存储父表中,请通过约束实现。...A:约束能确保引用完整性(换句话说,如果表中某行,约束能确保该行通过与另一张表中某一行一一对应)。...插入必须已经存在与父表来源中,这是引用完整性。 创建作为表约束提供了明确优势,如果违反了规则,约束会阻止我们破坏表。 不一定要是父表主键,但是要具有唯一性。 ?...因为当SELECT语句结果是一个虚表时,若没有别名,SQL就无法取得其中表。 为什么视图对数据库好处? 如果创建了视图,就不需要重复创建复杂联接与子查询。视图隐藏了子查询复杂性。

    2.9K50

    【Python全栈100天学习笔记】Day41 Django深入理解框架

    虽然实际应用中,这个后台可能并不能满足我们需求,但是在学习Django框架时,我们暂时可以利用Django自带后台管理系统来管理我们模型,同时也可以了解一个项目的后台管理系统到底需要哪些功能。...> 说明1:由于员工与部门之间存在多对一关联,所以也能通过部门反向查询该部门员工(从一对多关系中“一”一方查询“多”一方),反向查询属性默认名字是类名小写_set(如上面例子中emp_set...unique 设置为True时,表中字段必须是唯一 verbose_name 字段在后台模型管理显示名称,未指定时使用字段名称 ForeignKey属性 limit_choices_to:一个...db_constraint:是否为创建约束,默认为True。...on_delete:关联对象被删除时对应动作,可取包括django.db.models中定义: CASCADE:级联删除。

    2.3K30

    django ORM之values和annotate使用详解

    需求就是找出编号重复数据,只保留第一个 开始之前 使用了values和annotate两个函数 简单来说values可以理解成展示models指定列 annotate起到了group by作用...查看每条数据_id ? 对_id数据条数进行统计 ? 转换数据格式为list ? Emmm。。。只需要重复数据,所以把_id唯一数据剔除 写个简单遍历 ?...补充知识:django中annotate一点使用方法 annotate 使用方法: 有时候我们需要连接两个表做一些查询,比如博客中有两个模型,一个文章模型,一个分类模型,分类模型是文章中分类字段...,如果我们需要查询每个分类下文章数量,最简单方法就是先将所有分类查到: categories = NewsCategory.objects.all() 文章模型名称为News 然后每个分类django...都会自动给你添加一个属性category.news_set,这个方法就可以拿到分类对应文章,然后category.news_set.count()就可以拿到每个分类多少个文章了。

    2K20

    Mysql基础

    每个时间类型一个有效范围和一个"零",当指定不合法MySQL不能表示时使用"零"。 ?...BLOB是一个二进制大对象,可以容纳可变数量数据。4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳最大长度不同。...语句 --约束对子表含义: 如果在父表中找不到候选,则不允许子表上进行insert/update --约束对父表含义: 父表上进行update/delete以更新或删除子表中有一条或多条对...-- 应匹配行候选时,父表行为取决于:定义子表时指定 -- on update/on delete子句...带EXISTS关键字查询 -- EXISTS关字键字表示存在。使用EXISTS关键字时,内层查询语句不返回查询记录。 -- 而是返回一个真假

    4.2K20

    Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响

    作为铁杆Django用户,发现昨天Django进行了更新,且修复了一个SQL注入漏洞。印象里应该是Django一个SQL注入漏洞,且的确是可能在业务里出现漏洞,于是进行了分析。...时表示”。...正常情况下,transform一般用来通过连接两个表,比如.filter(author__username='phith0n')可以表示author连接用户表中,找到username字段;...就是如果你能控制filter方法参数名,就能通过方式来获取其他表一些敏感信息。...原因是,Django-Admin中就支持用户控制queryset查询键名,2017年微博中说到过这一点,不过当时没有测过JSONField,sad。 ?

    2K32

    Django中ORM操作

    1、无需连表查询性能低,省硬盘空间(选项不固定时用) 2、modle文件里不能动态增加(选项一成不变用Djangochoice) 其他字段 db_index = True 表示设置索引 unique...(authors) 通过字段正向连表查询,出版自保定书籍; city=models.Book.objects.filter(publish__addr__icontains='保定.....关联表字段,values(字段__关联表字段) 多对多:字段.all() 反向连表操作总结: 通过value、value_list、fifter 方式反向跨表:小写表名...点到天荒地老 所以可以通过obj..B表列表跨表操作(注意!!...() [userinfo对象,userinfo对象,] 小写表名 得到关系列 #因为使用values取值取得是字典不是对象,所以需要 小写表名(表)__ v = UserGroup.objects.values

    4.8K10

    一篇文章带你了解Django ORM操作(进阶篇)

    我们知道filter()查询出来,如果想取第一个需要再filter().first()才行。 还知道了get()和filter().first()区别等等。...Django ORM查询还有很多,继续来看叭!!! 查询操作 对象.字段 比如,我们拿到了一个信息,我们可以这样打印他信息。...总结 对象.字段拿到就是字段对象,直接就可以通过对象.字段.属性获取具体。 反向查询(表名__set.all()) 上述我们是通过正向查询方式查询到了书对应出版社具体信息。...但是如果说,我们拿到就是一个出版社名呢? 通常情况下,你可能会这样!...values 有时候,我们可能只需要一些特定列,这时候使用values即可。

    44911

    Django关系映射

    ="0dbccd1992474d30a4497b05295e807b") # 关联UserMit表中user_id对应主键 一对一(查询数据) ---- 正向查询 正向查询:直接通过属性查询,则为查询...') 反向查询 没有属性一方,可以调用反向属性查询到关联另一方 反向关联属性为实例对象.引用类名(小写) 当反向引用不存在时候,则会触发异常 当UserId类中定义了约束...一对多需要明确出具体角色,多表上设置 语法:当一个A类对象可以关联多个B类对象 class ClassRoom(models.Model): # 班级唯一 name = models.CharField...正向查询 Students.classroom # 直接通过调用属性查询 stu = Students.objects.get(id=1) print(stu.student_name,"班级是...MySQL中创建多对多需要以来第三张表来完成 Django中无需手动创建,Django自动完成 语法:关联两个类中任意一个类中models.ManyToManyField(MyModel

    1.7K20
    领券