mysql创建模型_为MySQL视图创建模型并在i上加入

我正在做一些原型,有一个像这样的简单模型class SampleModel(models.Model):

user_id = models.IntegerField(default=0, db_index=True)

staff_id = models.IntegerField(default=0, db_index=True)

timestamp = models.DateTimeField(default=timezone.now, db_index=True)

objects = AsOfManager()

现在我们需要执行需要self join的查询,它是用原始SQL编写的,如下所示:

^{pr2}$

此查询应该为每个用户返回按时间戳排序的最后一行。每个“链”(与用户_id相关的行)可能有数千行。在

现在我可以使用原始SQL,但是我失去了可组合性,我想返回另一个queryset。

同时,如果能让编写原始SQL更容易一些,那么我想我可以使用一个数据库视图。在

景色可能是这样的CREATE VIEW no_chain_sample_model_with_max_date AS SELECT user_id AS id, MAX(timestamp) AS timestamp

FROM no_chain_samplemodel

GROUP BY user_id;

因此,引用视图的模型可以是这样的:class SampleModelWithMaxDate(models.Model):

class Meta:

managed = False

db_table = 'no_chain_sample_model_with_max_date'

id = models.IntegerField(default=0, primary_key=True)

timestamp = models.DateTimeField(default=timezone.now, db_index=True)

但也存在一些问题:即使managed=False/管理.pymakemigrations'仍然为这个表创建迁移。

我甚至试图将迁移留在那里,但是用原始SQL替换模型来创建视图

但运气不好。

我现在需要做select\u相关联的两个表和查询,但是我应该怎么做呢?在

我在SampleModel上尝试了一个外键,如下所示:

截止日期=模型.ForeignKey(SampleModelWithMaxDate,null=True)

但这也行不通:

操作错误:(1054,“未知列”“无链”“样本”“模型”“带最大值”_日期按日期'在'字段列表')

所以一般来说,我甚至不确定是否有可能,我可以看到其他人使用带视图的模型,只是为了查询对我也有效的独立模型,但是有没有可能做比这更聪明的事情?在

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值