Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >使用过滤器查询的django orm外键最新数据

使用过滤器查询的django orm外键最新数据
EN

Stack Overflow用户
提问于 2022-05-11 17:08:17
回答 1查看 45关注 0票数 0
代码语言:javascript
代码运行次数:0
复制
    class Schedule(models.Model):
        user = models.ForeignKey(USER, on_delete=models.SET_NULL, null=True)

        area = models.ForeignKey(Site, on_delete=models.SET_NULL, null=True)
        created_at = models.DateTimeField(auto_now_add=True, null=True)
        updated_at = models.DateTimeField(auto_now=True, null=True)



    area = Schedule.objects.values("area").annotate(latest=Max('created_at')).values("area")
    latest = Schedule.objects.values("area").annotate(latest=Max('created_at')).values("latest")

    Schedule.objects.filter(created_at__in=latest, area__in=area)

我得到了我想要的价值。

然而,当我使用ForeignKey和DateTimeField进行过滤时,我感到不安。没有更好的办法了吗?

另外,除了上面的代码之外,你不能让它变得更干净吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-11 23:06:59

您可以为您的模型创建一个Manager并使用selected_related特性,它将为您创建快速查询,并且它已经准备好了“开箱即用”Django解决方案。请看姜戈文档。

下面是基于您的代码的示例

在Model.py中,类似于

代码语言:javascript
代码运行次数:0
复制
class SheduleManager(model.Manager):
   def all_prefetched_data(self):
      qs = self.get_queryset()
        qs = qs.select_related(
            'area_set'
        )
        return qs

在同一个Model.py中,您需要在Shedule模型中指定经理。

代码语言:javascript
代码运行次数:0
复制
listing = SheduleManager

现在,您可以通过创建日期对db项进行排序,并使用ForiegnKey对所有db进行查询。您还可以显示结果,例如在your_template.html中用字典b_list显示结果。

view.py

代码语言:javascript
代码运行次数:0
复制
def GetList(request):
    sh_list = Schedul.listing.all().order_by('-created_at')
    
    return render(request, 'your_template.html', {'b_list': sh_list})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72209060

复制
相关文章
Django之ORM 外键关联(三)
Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。
小团子
2019/07/18
2.2K0
Django之ORM 外键关联(三)
Django的ORM操作-查询数据
数据库的查询需要使用管理器对象进行 通过mymodel.objects管理器方法调用查询对象 方法 说明 all() 查询全部记录,返回QuerySet查询对象 get() 查询符合条件的单一记录 filter() 查询符合条件的多条记录 exclude() 查询符合条件外的全部记录 all()方法 ---- 使用方法:Asset.objects.all() from monitor.models import Asset querys =Asset.objects.all() for i in que
Yuou
2022/09/26
8550
Django笔记(九)Django的ORM,查询数据的方法
目前有两个表,一个用户表,一个用户类型表,一个用户对应一类型,但是一个类型下面有好多的用户。
一写代码就开心
2021/11/15
8860
Django笔记(九)Django的ORM,查询数据的方法
Django(17)orm查询操作[通俗易懂]
查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在ORM层面,这些查询条件都是使用field+__+condition的方式来使用的。以下将那些常用的查询条件来一一解释。
全栈程序员站长
2022/09/19
1.1K0
Django ORM (三) 查询,删除
ORM 查询操作 修改 views.py 文件 from django.shortcuts import render, HttpResponse from app01 import models from app01.models import Book,Author,Publisher def data_oper(req): # 获取 book 表 id 为2的价格 book = models.Book.objects.filter(id=2).values("price")
py3study
2020/01/15
1.2K0
python测试开发django-37.外键(ForeignKey)查询
前面在admin后台页面通过设置外键,可以选择下拉框的选项,本篇主要讲解关于外键(ForeignKey)的查询
上海-悠悠
2019/05/06
1.6K0
python测试开发django-37.外键(ForeignKey)查询
Django之ORM 聚合查询(四)
Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。
小团子
2019/07/18
5420
Django之ORM 聚合查询(四)
python学习(一)django orm多表查询
比如说上面的额代码,这样就会创建一个book和user的关联表,但是有些复杂场景,关联表中不仅仅有两个表的主键, 还有一些其他个性化属性,这个时候就需要单独写一个class来声明多对多关系,如下
一笠风雨任生平
2019/08/02
5960
Django之ORM F与Q查询
Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。
小团子
2019/07/18
1.1K0
Django之ORM F与Q查询
SQLAlchemy外键的使用
orm可以将数据库存储的数据封装成对象,同时,如果封装的好的话,所有的数据库操作都可以封装到对象中。这样的代码在组织结构上会非常的清晰,并且相对与使用sql语句在sql注入方面会极具降低。 SQLAlchemy中的映射关系有四种,分别是一对多,多对一,一对一,多对多 实现这种映射关系只需要外键(ForeignKey),和relationship 一对多: from sqlalchemy.ext.declarative import declarative_base from sqlalchemy impor
用户1173509
2018/01/17
2.3K0
Django之ORM 单表查询(二)
Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。
小团子
2019/07/18
4570
Django之ORM 单表查询(二)
Django(15)外键和表关系[通俗易懂]
如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下:
全栈程序员站长
2022/09/19
2.1K0
django开发中关于外键设置
我们要把源码中的db_constraint设置成Flase这样就有关联关系,但是不会受他约数
小小咸鱼YwY
2019/09/11
1.4K0
数据库内连接GROUP BY查询外键表数据行的总数
INNER JOIN [外键表] ON [主键表] 内链接,用 GROUP BY 分组外键数据,COUNT(*)计算该外键数据总行数,最后用 ORDER BY 排序,DESC 关键字表示降序,想让数据输出升序省略DESC关键字即可
星哥玩云
2022/08/16
2.4K0
数据库内连接GROUP BY查询外键表数据行的总数
MySQL3_外键及查询
外键的约束主要是用来保证引用的完整性的,主外键的名字可以不一样,但是数据类型可以一样.
以某
2023/03/07
3K0
用人话讲解django之ORM的查询语句
在日常开发中,数据库的增删改查(CDUR)中,查询需求偏多,所以查询的语法比增删改操作多得多,尤其是跨表关联查询,可以让代码精简很多。
用户4945346
2020/06/16
4850
Django的ORM操作-创建数据
基本操作包括增删改查(CRUD)即Create、Read、Update、Delete
Yuou
2022/09/26
4840
Django的ORM操作-更新数据
更新单个数据 ---- 修改单个实体的某些字段值的步骤 查询:通过get()得到要修改的实体对象 修改:通过对象的属性方法修改数据 保存: 通过save()进行保存 进入Django Shell进行操作 # 修改system字段为Ubuntu18.04 from monitor.models import Asset select = Asset.objects.get(id=1) select.system="Ubuntu18.04" select.save() # 一定要保存,如果不保存不会c
Yuou
2022/09/26
5630
点击加载更多

相似问题

使用外键字段的查询Django ORM

11

Django ORM -理解外键查询

11

使用外键的Django过滤器查询

012

django orm按每个外键的最新项目组

111

Django过滤器查询外键

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文