2016-04-12 20 views
0

etiketinde bir ManyToManyField değerini alın Sınıf makalesiyle {% for %} kullanırken görüntü ile ilgili değeri alamıyorum. Select_related ile denedim, ancak <img /> etiketi src="" özniteliğinde görüntülenecek resmin nasıl tanımlanacağını nasıl tanımlayacağımı bilmiyorum İstediğiniz gibi görünmesi için temiz bir yol var mı?Python/Django -

models.py

class Image(models.Model): 
     gallery = models.ManyToManyField(Gallery) 
     name = models.CharField(max_length=100) 
     image = models.ImageField(upload_to='static/images/gallery') 
     def __str__(self): 
      return self.name 

    class Article(models.Model): 
     section = models.ForeignKey(Menu) 
     title = models.CharField(max_length=100) 
     text = models.TextField() 
     type = models.ForeignKey(Type) 
     image = models.ManyToManyField(Image) 
     def __str__(self): 
      return self.title 

views.py

def index(request): 
    slider = Article.objects.all() 
    images = Image.objects.all() 
    return render(request, 'cms/index.html', locals()) 

şablon

{% for i in slider %} 
<li> 
    <img src="{{i.image}}" alt="{{i.title}}"/> 
    <h2>{{i.title}}</h2> 
    <p>{{i.text}}, {{i.image_url}}</p> 
</li> 
{% endfor %} 
+0

Kontrol bu, http://stackoverflow.com/questions/17846290/django-display-imagefield –

+0

teşekkürler. Görüntüyü nasıl görüntüleyeceğimiz değil, başka bir sınıfın içeriğinin benim döngümde nasıl edinileceği ile ilgili değildir. – katsele

+0

Lütfen cevabı kontrol edin. –

cevap

1

Görüntüyü birçok şehir tabloda görüntülemek için 2 forloop kullanmanız gerekir. cevap için

{% for i in slider %} 
<li> 
    {% for im in i.image.all %} 
    <img src="{{im.image.url}}" alt="{{im.name}}"/> 
    {% endfor %} 
    <h2>{{i.title}}</h2> 
    <p>{{i.text}}, {{i.image_url}}</p> 
</li> 
{% endfor %} 
+0

Teşekkürler, mükemmel bir şekilde çözdü! Yani eğer '.all' i ikinci bir forloopta çağırırsam, döngü içindeki tüm alanları onları çağırır mı? – katsele

0

Article.image, ManyToMany alanıdır. Hangi resmi görüntülemek istiyorsunuz? İlk?

<img src="{{i.image.all.0.image.url}}" alt="{{i.title}}"/> 

Tümü?

{% for im in i.image.all %} 
<img src="{{im.image.url}}" alt="{{im.name}}"/> 
{% endfor %} 
+0

Bir döngüye karşılık gelen bazı makaleleri görüntülemeye çalışıyorum. Bu döngüde, makaleyle ilgili görüntüyü göstermek istiyorum. Ama görüntü farklı bir sınıfta. Bu nasıl yapılabilir? – katsele

+0

Başka bir sınıfa ihtiyacınız yok. İhtiyacınız olan her şey 'image' alanında. "image" alanı, ilgili tüm görselleri içeren bir "QuerySet" dir. –