我在浏览页面中运行Django查询(v1.9)时遇到问题。我基本上从primers
表中检索了一条记录(工作正常),然后尝试从“{1}”基因中检索相应的记录。表:
models.py:
class Gene(models.Model):
GeneName = models.CharField(max_length=10, unique=True)
ChromosomeNo = models.CharField(max_length=2)
class Primer(models.Model):
PrimerName = models.CharField(max_length=20, unique=True)
Gene = models.ForeignKey(Gene)
views.py
def PrimerDetail(request, pk):
primer_info = get_object_or_404(Primer, pk=pk)
Gene_info = Gene.objects.get(Gene_id = primer_info.GeneName)
问题似乎是我使用primer_info.GeneName
。我明白了:
'Primer' object has no attribute 'GeneName'
将其更改为primer_info.Gene
,我得到:
无法解析关键字' Gene_id'进入田野。选择是:ChromosomeLoc,ChromosomeNo,Comments,Disease,Disease_id,GeneName,NoExons,id,primer`
我可以替换字符串值,它可以正常工作。如何在此上下文中引用作为外键对象的字段?
答案 0 :(得分:1)
通过上面的描述,您可以尝试另外一种获取Gene对象的方法,如下所示。
Gene_info = Gene.objects.get(pk = primer_info.Gene.id)
这将为您提供Gene对象的对象,该对象是Primer Table中的外键。
答案 1 :(得分:0)
好吧,因为你的Gene_id
模型中没有一个名为Primer
的字段。由于Gene
是Primer
中的外键,因此很容易获得Gene_info
:
Gene_info = primer_info.Gene
如果您想直接在Gene
模型上查询(在您的情况下这是非常不必要的),请执行以下操作:
Gene_info = Gene.objects.get(primer__id=primer_info.id)