Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Django:从对两个表执行联接的原始sql查询创建模型_Mysql_Django - Fatal编程技术网

Mysql Django:从对两个表执行联接的原始sql查询创建模型

Mysql Django:从对两个表执行联接的原始sql查询创建模型,mysql,django,Mysql,Django,所以我有一个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%' gr

所以我有一个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_table字段中放置什么

第二个问题:我如何执行原始查询,从中创建“BigDeposit”查询集

多谢各位


是的,为什么不呢?如果您有交易和用户模型,请使用外键 在它们之间,您的查询最终类似于 Trade.objects.values\u list('login','user\u phone')。filter(cmd=6, 注释\uuu startswith='DP', 用户组用='FX')开始。注释(利润总额=总额('利润'))。过滤器(利润总额=10000)


成功了!谢谢

你为什么想要一个单一的型号?如果这些字段来自不同的表,为什么不为这些表创建模型,并在需要时进行连接/聚合?因此,基本上创建两个模型,并使用django ORM执行与mysql查询等效的查询?是的,为什么不呢?如果您有交易和用户模型,它们之间有一个外键,那么您的查询结果类似于
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)
。问题是这些表要大得多,并且有很多字段也与其他表相关。我应该使用表中的所有字段创建这两个模型吗?或者我应该只包括我需要的字段吗?