所以我有一个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.py inspectdb,以便用这些字段创建一个模型。问题是这些字段来自不同的表。
我的模型是这样的:
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\u表字段中输入什么。
第二个问题:如何执行一个原始查询来创建一个“bigdeposit”查询集?
谢谢您
1条答案
按热度按时间n53p2ov01#
是的,为什么不呢?如果您有trade和user模型,并且它们之间有一个外键,那么您的查询将类似于trade.objects.values\u list('login','user\u phone').filter(cmd=6,comment\u startswith='dp',user\u group\u startswith='fx').annotate(profit\u sum=sum('profit').filter(profit\u sum\u gte=10000)。
成功了!谢谢!