我想在模板中的硬编码img src中使用与一对多关系连接的不同表中的属性。
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)
模板:
{% for offer in latest_offers %}
<img src="http://something.com/{{offer.id}}/{{offer.offersphotos.id}}.jpg">
{% endfor %}
{{offer.id}}效果很好,但如何在同一行中访问order = 1的照片的ID?
答案 0 :(得分:6)
我认为查询给定offerphotos
的所有offer
并获取模板中的第一个不是一个好主意。
相反,您可以在Offers
课程中定义一个属性,大豆可以获得第一个photo
。
它应该是这样的:
的 Models.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 %}
虽然您仍然可以使用template
中的逻辑:
<img src="http://something.com/{{offer.id}}/{{offer.offerphotos_set.first.id}}.jpg">
但我宁愿在向queries
显示信息之前完成所有templates