如何在模板中表示外键?
的 Models.py 的
class Trabajo(models.Model):
titulo = models.CharField(blank=True, max_length=150)
imagen = models.ImageField(upload_to='perfiles', verbose_name = 'Small image')
descripcion = models.TextField()
fecha = models.CharField(blank=True, max_length=150)
link = models.CharField(blank=True, max_length=150)
cliente = models.CharField(blank=True, max_length=150)
def __unicode__(self):
return self.titulo
class Imagen(models.Model):
titulo_proyecto = models.ForeignKey(Trabajo, related_name='+')
imagenes = models.ImageField(upload_to='perfiles', verbose_name = 'Imagen')
def __unicode__(self):
return unicode(self.titulo_proyecto)
的 Views.py 的
def index(request):
trabajos = Trabajo.objects.all()
imagenes = Imagen.objects.all()
return render_to_response('index.html', {'works': trabajos, 'images': imagenes})
的的index.html 的
{% for item in works %}
{% for obj in item.images.all %}
{{obj.imagenes}}
{% endfor %}
{% endfor %}
答案 0 :(得分:1)
的 Views.py 强> 的
def index(request):
trabajos = Trabajo.objects.all()
imagenes = Imagen.objects.all()
return render_to_response('index.html', {'works': trabajos, 'images': imagenes})
的的index.html 强> 的
{% for item in works %}
{{item.id}}
{% for obj in images %}
{% ifequal item.id obj.titulo_proyecto_id %}
{{item.id}} <img src="{{ MEDIA_URL }}{{obj.imagenes}}" />
{% endifequal %}
{% endfor %}
{% endfor %}
答案 1 :(得分:1)
好的,我想我知道你的意思。首先,您应该清理视图,以便它不会比需要更频繁地访问数据库。变化:
trabajos = Trabajo.objects.all()
imagenes = Imagen.objects.all()
为:
trabajos = Trabajo.objects.all().select_related()
现在尝试:
{% for item in works.imagen_set.all %}
<img src="{{ MEDIA_URL }}{{ item }}" />
{% endfor %}