我有类似的模型:
class Gtex1(models.Model):
id = models.TextField(primary_key=True)
sample = models.TextField(blank=True, null=True)
gtex_s4q7_0003_sm_3nm8m = models.FloatField(db_column='GTEX-S4Q7-0003-SM-3NM8M', blank=True, null=True)
gtex_qv31_1626_sm_2s1qc = models.FloatField(db_column='GTEX-QV31-1626-SM-2S1QC', blank=True, null=True)
gtex_13ovi_1026_sm_5l3em = models.FloatField(db_column='GTEX-13OVI-1026-SM-5L3EM', blank=True, null=True)
class Tcga1(models.Model):
id = models.ForeignKey(Gtex1, models.DO_NOTHING, db_column='id', primary_key=True)
sample = models.TextField(blank=True, null=True)
tcga_we_aaa0_06 = models.FloatField(db_column='TCGA-WE-AAA0-06', blank=True, null=True)
tcga_86_8668_01 = models.FloatField(db_column='TCGA-86-8668-01', blank=True, null=True)
tcga_d8_a146_01 = models.FloatField(db_column='TCGA-D8-A146-01', blank=True, null=True)
我有将近30个类似Tcga1的模型,它们具有相同的主键(id),这是Gtex1模型的外键。
我正在尝试这样做:
search_models=[models.Gtex1,models.Tcga1,models.Tcga2,models.Tcga3]
search_results = []
search_query='tcga_61_2111_01'
for m in search_models:
fields=[x for x in m._meta.get_fields()]
search_queries=[Q(**{x.name + "__contains" : search_query}) for x in fields]
q_object = Q()
for query in search_queries:
q_object = q_object | query
results = m.objects.filter(q_object)
search_results.append(results)
print(search_results)
这基本上是遍历所有模型的列名,并查找搜索查询并对其进行过滤。
但是,我收到如下错误消息:
如果有人可以帮助我了解如何解决此问题,则任何见解都会有所帮助和赞赏。
非常感谢您。