如何在模板中表示外键?

时间:2013-01-26 13:30:11

标签: python django

如何在模板中表示外键?

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 %}

2 个答案:

答案 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 %}