如何使用django模板语言访问一对多关系中另一个表的属性?
我想在模板中使用硬编码img src中与一对多关系连接的不同表的属性 Models.py:如何使用django模板语言访问一对多关系中另一个表的属性?,django,django-models,django-templates,django-views,Django,Django Models,Django Templates,Django Views,我想在模板中使用硬编码img src中与一对多关系连接的不同表的属性 Models.py: class Offers(models.Model): province = models.CharField() district = models.CharField() location = models.CharField() class OffersPhotos(models.Model): offers_id =
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)
模板:
{% for offer in latest_offers %}
<img src="http://something.com/{{offer.id}}/{{offer.offersphotos.id}}.jpg">
{% endfor %}
{%用于最新的\u报价%}
{%endfor%}
{offer.id}}工作得很好,但如何访问同一行中order=1的照片的id?我认为,在给定
offer
并在模板中获取第一张照片的情况下,查询所有offerphoto
不是一个好主意
相反,您可以在Offers
类中定义一个属性,然后您可以获得第一张照片
应该是这样的:
型号.py
class Offers(models.Model):
province = models.CharField()
district = models.CharField()
location = models.CharField()
def first_offerphoto(self):
return self.offerphotos_set.first()
模板
{% for offer in latest_offers %}
<img src="http://something.com/{{offer.id}}/{{offer.first_offerphoto.id}}.jpg">
{% endfor %}
但我宁愿在将信息显示到模板中之前进行所有查询
,
,这比我强多了。只想补充一点,OP的问题offerphotos
应该是offerphotos\u set
,正如您所指出的那样。他们还可以使用offer.offerphotos_set.all | first as image%}
以同样的方式工作。
<img src="http://something.com/{{offer.id}}/{{offer.offerphotos_set.first.id}}.jpg">