首页 > 其他分享 >django orm 使用关联字段查询和更新

django orm 使用关联字段查询和更新

时间:2023-07-31 16:15:32浏览次数:35  
标签:__ exam 查询 paper orm user django id uuid

关联字段查询

_exam_fields = ['add_datetime', 'times', 'start_date', 'end_date', 'uuid', 'name', 'img', 'duration',
                         'bx_duration']
         _alias_fields = {
             'pass_score': F('score'), 'exam_paper_id': F('exam_paper__uuid'),
             'exam_paper_name': F('exam_paper__name'),
             'again_uuid': Value('', output_field=CharField())
         }
         _exam__filter = {'exam_range__org__org_user__user_id': self.request.user_id}
         query_exam = Exam.objects.filter(**_exam__filter).values(*_exam_fields).annotate(**_alias_fields).order_by(
             '-add_datetime')

         _again_fields = ['add_datetime', 'times', 'start_date', 'end_date', ]
         _alias_fields = {
             'uuid': Value('', output_field=CharField()), 'name': F('exam__name'), 'img': F('exam__img'),
            'duration': F('exam__duration'), 'bx_duration': F('exam__bx_duration'), 'pass_score': F('exam__score'),
             'exam_paper_id': F('exam__exam_paper__uuid'), 'exam_paper_name': F('exam__exam_paper__name'),
            'again_uuid': F('uuid'),
         }

使用关联字段更新

 UserCert.objects.filter(
        exam_record__is_pass=True,
        status=1
    ).update(
        user=Subquery(
            ExamRecord.objects.filter(
                uuid=OuterRef('exam_record_id'),
                is_pass=True
            ).values('user')[:1]
        ),
        status=2
    )

使用子查询过滤

subquery = MockExamRecord.objects.filter(
            mock_exam_id=OuterRef('mock_exam_id'),
            user_id=self.request.user_id,
        ).order_by('-add_datetime').values('add_datetime')[:1]

        obj_list = MockExamRecord.objects.filter(
            add_datetime__in=Subquery(subquery),
            user_id=self.request.user_id,
        ).distinct('mock_exam_id')

标签:__,exam,查询,paper,orm,user,django,id,uuid
From: https://www.cnblogs.com/guanchaoguo/p/17593694.html

相关文章

  • IDEA,Pycharm,Goland,Webstorm 最新发布2023.2版本,亲测好用!
    期待已久的IntelliJIDEA2023.2终于正式发布了,同时发布的还有Pycharm,Goland,Webstorm等。具体的改变相信大家已经提前有所了解的了,我迫不及待的就下载体验了下,UI变好看了,使用起来感觉更流畅,好用推荐!IDEA2023.2最新版激活成功如下GoLand2023.2最新版激活成功如下......
  • django数据库不存在就插入存在就修改
    django数据库不存在就插入存在就修改需求django插入数据到数据库时,需要根据条件判断,如果不存在,就插入一条新数据,如果已经存在,则修改数据的字段解决办法函数使用该函数可以完成上述功能模型.objects.update_or_create()例如Student.objects.update_or_create参数defaults......
  • url函数的使用,无名分组和有名分组,反向解析,django2中5种转换器,路由分发,伪静态的概
    url函数的使用(支持正则表达式)#django1中使用的是urlurl('test',views.test),url函数的第一个参数是支持正则表达式的如果匹配到一个路由,就不在往下匹配,直接执行路由对应的视图函数#http://127.0.0.1:8000/test/是django默认设置的,django会先拿着test去匹配,如果匹配不......
  • 识别阻塞查询和 SQL Server 阻塞原因的技术
    由数据库对象锁定导致的进程阻塞是一个常见问题。锁定通过强制每个执行的SQLServer事务通过ACID测试来确保数据库中存储的数据的完整性。它认为每笔交易都必须满足以下要求:原子性——事务要么在执行时完全完成,要么根本不执行一致性——事务必须创建一个有效的新数据状态,或者......
  • mongodb模糊查询性能
    MongoDB模糊查询性能优化指南作为一名经验丰富的开发者,我将为你详细介绍如何优化MongoDB的模糊查询性能。以下是整个过程的步骤概览:步骤内容1创建合适的索引2使用合适的正则表达式3避免使用无效的模糊查询4使用投影来减少返回的数据量5使用分页来限制......
  • mongodb 模糊查询
    MongoDB模糊查询实现指南简介在实际的开发中,经常需要对数据库中的数据进行模糊查询。MongoDB作为一种NoSQL数据库,也提供了强大的模糊查询功能。本文将教会你如何在MongoDB中进行模糊查询。流程概述下面是MongoDB模糊查询的实现步骤,我们可以用表格形式展示:步骤描述1......
  • mysql 子查询插入
    MySQL子查询插入的实现概述在MySQL中,可以使用子查询来实现插入操作。子查询是指在一个查询语句中嵌套另一个查询语句,可以将子查询的结果作为插入的值。本文将教你如何使用MySQL子查询来实现插入操作。步骤下面是实现MySQL子查询插入的步骤:步骤描述1编写子查询语句......
  • mysql 创建存储过程,查询某学号学生计算机基础课的成绩 ,并输出“优秀”或“良好
    MySQL存储过程简介及示例什么是存储过程?存储过程是一段预编译的SQL代码,可以在数据库中被重复使用。通过存储过程,我们可以将一系列的SQL语句组合在一起,并进行参数的传递和逻辑控制,从而提高数据库的性能和安全性。MySQL存储过程的创建在MySQL中,我们可以使用CREATEPROCEDURE语句......
  • mysql 查询组织机构父
    MySQL查询组织机构父作为一名经验丰富的开发者,我很乐意教会你如何实现MySQL查询组织机构父。这一过程可以分为以下几个步骤:确定组织机构表的结构获取指定组织机构的父节点递归查询父节点直到根节点接下来,我将为你详细介绍每个步骤所需要做的事情,并提供相应的代码。步骤......
  • mysql 查询小于制定时间的数据
    MySQL查询小于指定时间的数据在开发和管理数据库中,经常需要根据特定的条件来查询数据,而其中一个常见的需求是根据时间条件来查询小于指定时间的数据。MySQL提供了多种方法来实现这个目标,本文将介绍其中的几种常用的方法,并提供相应的代码示例。方法一:使用比较运算符在MySQL中,可......