mysql - Django:从对 2 个表执行 Join 的原始 SQL 查询创建模型

标签 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%'
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/

相关文章:

python - docker python 官方示例错误

mysql - SQL WHERE NOT EXISTS 查询不返回结果

mysql - debian linux下加载xml到mysql

mysql - 我的工会发挥作用了吗?

python - Django 在模板中获取 ContentType

python - 安装了 gunicorn 但它不在 venv/bin 文件夹中

mysql - 如果某列中的值重复,则从集合结果中检索一行

php - Mysql_fetch_array 提供的参数不是有效的 MYSQL 查询

python - 在 Divio 上为 Wagtail 应用程序部署静态文件

django - 使用时出错 "django.contrib.auth.views.login"