Django -连接两个没有外键的表



我有两个表,想要连接它们。但如果没有rawQueryset和raw SQL,我就无法做到这一点。

我怎么能加入两个模型没有外键?JOIN的列不是唯一的,所以它不能是PK和外键。

我想得到这样的SQL

'SELECT * FROM genome AS A JOIN metadata AS B ON A.query_id = B.sample_id',

和我用这个模型。


class Genome(models.Model):
query_id = models.CharField(max_length=100) 
ref_id = models.CharField(max_length=30)
matching_hashes = models.CharField(max_length=30)

class Metadata(models.Model):
project_id = models.CharField(max_length=50) # Metagenome의 query id와 JOIN함
sample_id = models.CharField(max_length=50)

你可以试试:

首先,根据需要构造一个SQL查询

sql_query = "SELECT * FROM genome AS A JOIN metadata AS B ON A.query_id = B.sample_id"

在django数据库连接中执行SQL查询的用户:

from django.db import connection
def my_custom_sql(self):
cursor = connection.cursor()    
cursor.execute(sql_query)
row = cursor.fetchall()
return row

或者您可以尝试按以下方式执行raw()

Genome.objects.raw(sql_query) # in some cases it may not work

你可以试试:

sample_ids = Metadata.objects.values('sample_id')
Genome.objects.filter(query_id__in=sample_ids)

相关内容

  • 没有找到相关文章

最新更新