所以我有一个用于报告的 mysql 数据库。我们正在尝试创建一个 API 来查询该数据库,以便找到存款超过一定金额的客户:
查询如下所示:
SELECT t.`LOGIN`,SUM(t.PROFIT) AS total_deposits,u.`phone`
FROM mt4_trades t join mt4_users u on t.LOGIN = u.LOGIN
where t.CMD=6 and t.COMMENT like 'DP%'
and u.`group` like 'FX%'
group by t.`LOGIN`
having sum(t.PROFIT)>10000;
我执行了python manage.pyspectdb,以便使用这些字段创建模型。问题是这些字段来自不同的表。
这就是我的模型的样子:
from django.db import models
# Create your models here.
class BigDeposit(models.Model):
login = models.IntegerField(db_column='LOGIN', primary_key=True) # Field name made lowercase.
group = models.CharField(db_column='GROUP', max_length=16) # Field name made lowercase.
profit = models.FloatField(db_column='PROFIT') # Field name made lowercase.
phone = models.CharField(db_column='PHONE', max_length=32) # Field name made lowercase.
class Meta:
managed = False
db_table = '?????'
第一个问题:在这种情况下我应该在 db_table 字段中放入什么。
第二个问题:如何执行原始查询来创建“BigDeposit”查询集?
谢谢
最佳答案
Yes, why not? If you have Trade and User models, with a foreign key between them, your query ends up being something like Trade.objects.values_list('login', 'user__phone').filter(cmd=6, comment__startswith='DP', user__group__startswith='FX').annotate(profit_sum=Sum('profit')).filter(profit_sum__gte=10000).
成功了!谢谢!
关于mysql - Django:从对 2 个表执行 Join 的原始 SQL 查询创建模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52200295/