examples - instalar bootstrap con django
¿Cómo acceder a las propiedades de otra tabla en una relación de uno a muchos usando el lenguaje de plantillas django? (1)
Creo que no es una buena idea consultar todas las offerphotos
ofrecidas por la offer
y obtener la primera en una plantilla.
En su lugar, puede definir una propiedad en su clase Offers
, soy capaz de obtener la primera photo
.
Debería ser algo como esto:
Models.py
class Offers(models.Model):
province = models.CharField()
district = models.CharField()
location = models.CharField()
def first_offerphoto(self):
return self.offerphotos_set.first()
Modelo
{% for offer in latest_offers %}
<img src="http://something.com/{{offer.id}}/{{offer.first_offerphoto.id}}.jpg">
{% endfor %}
Aunque todavía puedes usar las lógicas en tu template
:
<img src="http://something.com/{{offer.id}}/{{offer.offerphotos_set.first.id}}.jpg">
Pero prefiero hacer todas las queries
antes de mostrar la información en las templates
Me gustaría usar propiedades de diferentes tablas conectadas con la relación de uno a muchos en img src codificado en la plantilla.
Models.py:
class Offers(models.Model):
province = models.CharField()
district = models.CharField()
location = models.CharField()
class OffersPhotos(models.Model):
offers_id = models.ForeignKey(''Offers'')
order = models.IntegerField()
Views.py:
def index(request):
latest_offers = Offers.objects.order_by(''-creation_date'')[:5]
context_dict = {''latest_offers'': latest_offers}
return render(request, ''something.html'', context_dict)
Modelo:
{% for offer in latest_offers %}
<img src="http://something.com/{{offer.id}}/{{offer.offersphotos.id}}.jpg">
{% endfor %}
{{offer.id}} funciona a la perfección, pero ¿cómo puedo acceder a la identificación de la foto que tiene order = 1 en la misma línea?