2017-08-04 36 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

相關問題