2012-06-15 36 views
11

Birkaç haftadan beri Python ve Django'yu öğreniyorum. Bu noktaya kadar diğer kullanıcıların sorularını ve cevaplarını okumak yeterliydi.Ama şimdi ilk sorumun anı geldi.Django: ForeignKey ile şablona nasıl bağlanır?

Ben gelen en iyi şekilde benim sorunu açıklamak için çalışacağız. Benim sorunum, istediğim verileri sorgulayamama veya almamam.

Sınıf Entry için ForeignKey tarafından ilişkili bir Galerisi'nin yanında ForeignKey tarafından ilişkilidir sınıf Image birinci nesnenin url almak istiyorum. İşte

bugüne kadar models.py

:

class BlogEntry(models.Model): 
    ... 
    title = models.CharField(max_length=100) 
    ... 

class Gallery(models.Model): 
    entry = models.ForeignKey('BlogEntry') 

class Image(models.Model): 
    gallery = models.ForeignKey('Gallery') 
    picture = models.ImageField(upload_to='img') 

Görünüm:

def view(request): 
    return render_to_response('mainview.html', { 
    'entryquery': BlogEntry.objects.all(), 
    } 
) 

Şablon:

{% for item in entryquery %} 
    <h1>{{ item.title }}</h1> 
    <img src="{{ item.WHAT TO ENTER HERE? :) }}" /> 
{% endfor %} 

O ne istiyorum açıktır? Birisi bana yardım edebilir mi ve mümkün olduğunda kısa bir açıklama yazabilir mi?

selam Bastian

cevap

14

yapabilirsiniz access related members sadece other attributes in a template gibi, gibi bir şey yapabilirsiniz, böylece: item.gallery_set.all.0.image_set.all.0.picture.img. Ancak, sadece sen yabancı anahtarında related_name eklemek zorunda olduğunu

+0

Hızlı cevabınız için çok teşekkürler :). Tam olarak bu kod satırını anlamıyorum. İlgili üyelere erişimin bir dokümantasyonuna bağlantı verebilir misiniz? Django belge sayfasında bir şey bulamadım. – user1459531

+0

Evet, buna bir bağlantı ekledi. Umarım yardımcı olur! – cberner

+0

Teşekkür ederim, Teşekkür ederim, Teşekkürler! :) – user1459531

0
class BlogEntry(models.Model): 
    ... 
    title = models.CharField(max_length=100) 
    ... 

class Gallery(models.Model): 
    entry = models.ForeignKey('BlogEntry',related_name="galleries") 

class Image(models.Model): 
    gallery = models.ForeignKey('Gallery',related_name='images') 
    picture = models.ImageField(upload_to='img') 

gibi item.first_image veya bir şeyler yapabileceğini, böylece başını kaldırdı ve uygun bir resim döndü BlogEntry üzerinde bir yöntemi tanımlamak daha kolay olabilir Galeri modeli ve şablon görünümü:

{% for g in blogentry.galleries.all %} 
    {{g.name}} 
     {%for i in g.images.all %} 
      <img src="{{i.picture.url}}">{{i.picture}}</img> 
     {% endfor %} 
{% endfor %} 
İlgili konular