Ana Modelimin diğer DB tablolarına ForeignKey alanlarının bulunduğu bir Django uygulamasına sahibim. Django: objects.values () işlevini kullanın ve şablonda ForeignKey verilerini alın
class Bugs(models.Model):
bug_id = models.PositiveIntegerField(primary_key=True)
bug_severity = models.ForeignKey(Bug_severity,null=True)
priority = models.ForeignKey(Priority,null=True)
bug_status = models.ForeignKey(Bug_Status,null=True)
resolution = models.ForeignKey(Resolution,null=True)
etc...
ForeignKey tabloları tamamı
ben şablonda görüntülenmesini istediğiniz ismi döndüren bir unicode fonksiyonu var. görünümündeclass Priority(models.Model):
value = models.CharField(max_length=64)
sortkey = models.PositiveSmallIntegerField()
isactive = models.NullBooleanField()
visibility_value_id = models.SmallIntegerField(null=True,blank=True)
def __unicode__(self):
return self.value
, ben sorguyu çalıştırıyorum: şablonunda
bugs = Bugs.objects.filter(active=True).order_by('priority__sortkey','bug_severity__sortke
, ben onlar aracılığıyla yineleme ve doğru olarak ForeignKey değeri görüntüleyebilir.
{% for bug in bugs %}
<tr class="bugrow" >
<td>{{bug.bug_id}}</td>
<td>{{bug.priority}}</td>
<td>{{bug.bug_severity}}</td>
<td>{{bug.bug_status}}</td>
<td>{{bug.resolution}}</td>
ben yaşıyorum sorun ben şablona göndermeden önce Böcek verileri işlemek için gereken, bu yüzden bir sözlük dönmek için() yöntemini değerlerini kullanır. Bu sözlüğü şablona aktardığımda, bir ForeignKey'e işaret eden herhangi bir alan göstermez.
Bunun nedeni, değerlerin yalnızca gerçek veritabanı değerini döndürmesidir, bu yüzden FK'yi takip edemediğinden eminim.
Soru şu ki, onu şablona gönderen verileri nasıl değiştirebilirim ve yine de ForeignKey'i takip edebilirim?
Mükemmel çalıştı. Yemin ederim ki Queryset.values () dokümantasyonunu 10 kez anlamaya çalışıyorum ve FK ilişkileri hakkında bu alt bloğu asla okumadım. – zoidberg
Kötü hissetme - İlk başladığımda bunu birden çok kez özledim. Ben şahsen, daha sonra değil, belgelerin özellikli bir parçası olması gerektiğini düşünüyorum. –