Вы можете сделать это, используя raw sql:
def my_custom_sql(m):
from django.db import connection, transaction
cursor = connection.cursor()
# Data retrieval operation - no commit required
command = """SELECT *
FROM tX
INNER JOIN tY
ON (tX.n=tY.n AND tY.m=%s)"""
cursor.execute(command % str(m))
rows = cursor.fetchall()
return rows
, используя ORM, я думаю, вы можете сделать это, используя values_list
и фильтр in
:
class X(models.Model):
n = models.IntegerField()
class Y(models.Model):
n = models.IntegerField()
m = models.IntegerField()
xs = X.objects.filter(n__in=Y.objects.filter(m=m).values_list('n')).distinct()
edit: Как отмечено в комментариях, этот метод сильно ударит по БД