gpt4 book ai didi

django - 将 PostgreSQL 重写为 Django ORM

转载 作者:行者123 更新时间:2023-11-29 12:18:15 25 4
gpt4 key购买 nike

如果可以在没有原始 SQL 的情况下将此 PostgreSQL 查询重写为 Django ORM,我自己尝试过但没有成功。

这是基金的模型

class Fund(models.Model):
name = models.CharField(max_length=320, unique=True)
fund_manager = models.CharField()
..............

这是 NAV 的模型

class NAV(models.Model):
price = models.DecimalField(max_digits=9, verbose_name=_('NAV'))
date = models.DateField(verbose_name=_('date'))
fund = models.ForeignKey('Fund', related_name='navs')
created_date = models.DateTimeField(default=now)

这是有效的 sql 查询,需要重写为 Django ORM

select * from finance_fund ORDER BY(
(select price from finance_nav where date='2016-11-08' and fund_id=finance_fund.id) /
(select price from finance_nav where date='2016-11-07' and fund_id=finance_fund.id)
)

所以基本上我需要按外键向后关系的两个简单查询的除法结果排序

提前致谢!

最佳答案

仅使用原始 SQL。尝试类似的东西:

qs = Fund.objects.annotate(x=RawSQL("""
(select price from finance_nav where finance_fund.id=fund_id and date=%s limit 1)
/ (select price from finance_nav where finance_fund.id=fund_id and date=%s limit 1)
""",('2016-11-08', '2016-11-07'))).order_by('x')

关于django - 将 PostgreSQL 重写为 Django ORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41204461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com