2017-08-04 72 views
1

有了这两款车型:Django 1.9无法将关键字'模型'解析为字段。选项包括:通讯,ID1,ID2,id2_id

class Models(models.Model): 
    id = models.IntegerField(primary_key=True) 
    name = models.TextField() 
    genes = models.TextField(blank=True, null=True) 
    class Meta: 
     db_table = 'models' 

class ModelInteractions(models.Model): 
    id1 = models.IntegerField(primary_key=True) 
    id2 = models.ForeignKey('Models') 
    comm = models.TextField(blank=True, null=True) 
    class Meta: 
     unique_together = (('id1', 'id2'),) 

我想选择comm(从ModelInteractions),但也有name(从Models),用于接收特定request_id(ID与请求)。

我使用:

# request_genes example = "ab-2;cra-19" 
genes = request_genes.split(';') 
condition = Q(id2=request_id) 
for field in genes: 
    condition &= Q(models__genes__icontains=field) 
models = ModelInteractions.objects.filter(condition) 

这将返回:

Cannot resolve keyword 'models' into field. Choices are: comm, id1, id2, id2_id. 

没有for循环一切工作正常,但我没有Models数据。

我错过了什么?

回答

1

尝试,

for field in genes: 
    condition &= Q(id2__genes__icontains=field) 
models = ModelInteractions.objects.filter(condition) 

Models是表的名称。执行查询时,请使用field_names作为管理器方法filter的关键字参数。

+0

是的,这工作。还有一个问题:如何在模板中显示'name'(来自'Models')?循环之后的'{{model.name}}'似乎不起作用。 – feci

+0

尝试'{{{model.id2.name}}'.. – zaidfazil

+0

你愿意帮我选择标记我的答案吗? – zaidfazil

相关问题