django - 从最接近日期的对象获取标题,django模型
问题描述
我要模特:
周:
class Week(models.Model):
week_id = models.Charfield(unique=True, null=False, primary_key=True)
year = models.PositiveSmallInteger()
weeknumber = models.PositiveSmallInteger()
...
和
截止日期
class Deadline(models.Model):
deadline_type = models.CharField()
end_at = models.DateTimeField(blank=False)
week_id = models.ForeignKey(Week, related_name='deadlines', on_delete=models.CASCADE)
...
这给了我这样的输出:
{
"weeknumber": 1,
"leaflet_year": 2019,
"week_id": "01_2019",
"deadlines": [
{
"deadline_type": "Some Deadline type",
"end_at": "2019-10-23T14:00:00Z",
},
...
]
}
我想要实现的是用最接近今天deadline_type
的截止日期对象来注释 Week 对象。end_at
我可以注释结束日期,但我根本不知道如何获取类型。
解决方案
我认为您可以使用subquery这样做:
from django.models.db import Subquery, OuterRef
deadline = Deadline.objects.filter(week_id=OuterRef('pk')).order_by('end_at')
weeks = Week.objects.all().annotate(closest_deadline_type=Subquery(deadline.values('deadline_type')[:1]))
推荐阅读
- python - 如何构建一个 yaml 文件来运行我的 python 代码
- microservices - 微服务应该可重用吗?
- angular - RxJs / Angular:通过地图循环内的订阅获取其他数据
- c# - Kafka 非常高的延迟 C#
- ruby-on-rails - LoadError:无法自动加载常量(Rails + Sidekiq)
- sql-server - MSSQL 代理:如果导出 0 行,则通知失败
- python - 全局禁用“特殊变量”,并针对所有新项目
- python - 使用`pymysql`时如何修复`packets large than config size`错误
- windows - 如何在 Windows 终端(Powershell 核心)本身中查看当前配色方案?
- python - 机器学习回归的局限性?