我有兩個表,想加入它們..但如果沒有 rawQueryset 和原始 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)
uj5u.com熱心網友回復:
你可以試試這個:
首先,根據需要構造一個 SQL 查詢
sql_query = "SELECT * FROM genome AS A JOIN metadata AS B ON A.query_id = B.sample_id"
用戶在 django DB 連接中進行 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
uj5u.com熱心網友回復:
你可以試試這個:
sample_ids = Metadata.objects.values('sample_id')
Genome.objects.filter(query_id__in=sample_ids)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/315212.html
上一篇:與另外兩個列上的SQLJOIN
