【发布时间】:2017-01-03 17:39:21
【问题描述】:
我目前正在将我们的服务器从 Java 切换到 Python (Django),并且正在使用 ORM 重新创建我们的 SQL 查询,其中一个被证明是困难的,因为我需要加入同一张表。以下是查询
SELECT U1.suser, COUNT(U1.id) FROM United U1 INNER JOIN United U2 ON
U1.sUser = U2.pUser WHERE U2.sUser IN (select sUser from united where pUser = '105660')
and U1.pUser = '105660' and U1.sUser IN ('580664','1015396') GROUP BY U1.id, U1.suser
这是我的模型:
class United(models.Model):
id = models.IntegerField(primary_key=True)
puser = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, db_column='puser')
suser = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, db_column='suser',
related_name='secondary_united')
date = models.DateTimeField(max_length=34, blank=True, null=True, auto_now_add=True)
class Meta:
db_table = 'United'
unique_together = (('puser', 'suser'),)
该查询旨在查找我自己(主叫用户)和他们所有朋友(ID 列表)之间的相互连接数
查询按我希望的方式工作,以使用直接 SQL(尽管由于此主键错误,我无法使用 .raw() 方法使其工作
django.db.models.query_utils.InvalidQuery: Raw query must include the primary key
但我想找到一种使用 ORM 的方法。
【问题讨论】:
-
抱歉@e4c5 添加到错误中
标签: python sql sql-server django orm