2016-04-12 16 views
1

ビューページ内でDjangoクエリ(v1.9)を実行する際に問題があります。私は基本的にそれから「遺伝子」テーブルから対応するレコードを取得しようと、primersテーブル(つまり、正常に動作しています)から1つのレコードを取得しています:Djangoビューのクエリと外部キーの参照

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) 

ビューを.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_info.Gene

'Primer' object has no attribute 'GeneName' 

変更をし、私が手::私は取得

がフィールドにキーワード 'Gene_id' を解決できません。

私は文字列値を代替することができprimer` ChromosomeLoc、ChromosomeNo、コメント、病、Disease_id、GeneName、NoExons、ID、およびそれが正常に動作します:選択肢があります。このコンテキストで外部キーオブジェクトであるフィールドをどのように参照する必要がありますか?

答えて

0

PrimerモデルにGene_idというフィールドがないことがあります。 GenePrimerの外部キーであるので、それはGene_infoを取得するのは簡単です:

Gene_info = primer_info.Gene 

あなたはGeneモデル(あなたのケースではかなり不要です)に直接照会したい場合は、操作を行います。

Gene_info = Gene.objects.get(primer__id=primer_info.id) 
+0

ありがとうございました!私はそれが実際には私が後にした 'ChromosomeNo'フィールドであることを説明することを忘れていたので、Geneモデルを照会することが必要でした。なぜか考えてみるのに数分かかるかもしれないが、私はとても感謝している! – 16shells

+0

それは同じですが、あなたは 'Gene_info = primer_info.Gene.ChromosomeNo'を持つことができます。 –

+0

再度、感謝します。 – 16shells

1

上記の説明では、Geneオブジェクトを取得するもう1つの方法を試してみることができます。

Gene_info = Gene.objects.get(pk = primer_info.Gene.id) 

これは、プライマーテーブルの外来キーであるGeneオブジェクトのオブジェクトを提供します。

関連する問題