0

如何在模板中表示外键?

模型.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)

视图.py

def index(request):
    trabajos = Trabajo.objects.all()
    imagenes = Imagen.objects.all()
    return render_to_response('index.html', {'works': trabajos, 'images': imagenes})

索引.html

{% for item in works %}

    {% for obj in item.images.all %}
        {{obj.imagenes}}
    {% endfor %}

{% endfor %}
4

2 回答 2

1

视图.py

  def index(request):
        trabajos = Trabajo.objects.all()
        imagenes = Imagen.objects.all()
        return render_to_response('index.html', {'works': trabajos, 'images': imagenes})

索引.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 %}
于 2013-01-26T13:35:07.040 回答
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 %}
于 2013-01-26T13:45:26.780 回答