2016-04-12 12 views
1

Görünümler sayfamda bir Django sorgusu (v1.9) çalıştırmakta sorun yaşıyorum.Django, sorguyu ve yabancı anahtar aramasını görüntülüyor

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) 

görünümler temelde ardından 'gen' tablosundaki ilgili kaydın alınmaya çalışılırken, primers tablodan bir kayıt (yani çalışıyor ince) almak ediyorum sorun primer_info.GeneName benim kullanımı ile görünmektedir

def PrimerDetail(request, pk): 
    primer_info = get_object_or_404(Primer, pk=pk) 
    Gene_info = Gene.objects.get(Gene_id = primer_info.GeneName) 

.py. primer_info.Gene için

'Primer' object has no attribute 'GeneName' 

Değiştir o ve ben olsun: Ben olsun

alanına anahtar kelime 'Gene_id' çözülemiyor.

ben bir dize değeri yerine geçebilir primer` ChromosomeLoc, ChromosomeNo, Yorumlar, Hastalık Disease_id, GeneName, NoExons, kimlik ve iyi çalışıyor: seçeneklerdir. Bu bağlamda yabancı anahtar nesne olan bir alana nasıl başvurmalıyım?

cevap

0

Bunun nedeni, Primer modelinizde Gene_id adında bir alana sahip olmamanızdır. GenePrimer yabancı anahtar olduğundan, Gene_info almak kolaydır:, siz (sizin durumda oldukça gereksizdir) Gene model üzerinde doğrudan sorgulamak istiyorsanız

Gene_info = primer_info.Gene 

yapın:

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

Teşekkür ederiz! Ben aslında 'ChromosomeNo' alanı olduğunu açıklamak unuttum, bu yüzden Gen modeli sorgulama gerekiyordu.Ama işe yaradı. Neden olduğunu düşünmek için birkaç dakikam var, ama çok minnettarım! – 16shells

+0

Aynı, Gene_info = primer_info.Gene.ChromosomeNo' olabilir. –

+0

Anladım. Tekrar teşekkürler. – 16shells

1

Yukarıdaki açıklama ile Gene nesnesini almanın bir yolu daha deneyebilirsiniz. Bu, Primer Tablosunda yabancı anahtar olan Gene nesnesinin nesnesini verir. Bu, Primer Tablosunda yabancı anahtar olan Nesne nesnesinin nesnesini verir..

İlgili konular