从模板中的多对多关系django获取第一个元素
Get first element from many to many relationship django in template
我正在尝试从查询集中获取第一个元素,该元素由模板中的 ManyToManyField
模型字段返回。
models.py
class CraftImage(models.Model):
image = models.ImageField(upload_to='crafts_images/', null=True)
class Craft(models.Model):
title = models.CharField(max_length=100, null=False, blank=False)
images = models.ManyToManyField(CraftImage, blank=True, related_name='craft_images')
views.py
def work_all(request):
crafts = Craft.objects.all()
context = {
'crafts': crafts,
}
template.py
{% for craft in crafts %}
<div style="background-image: url('{{ craft.images[0].image.url }}');"></div>
{% endfor %}
像这样。
我也尝试了一些我发现对我不起作用的解决方案,例如..
views.py
crafts = Craft.objects.all()
images = Craft.objects.values_list('images').first()
print(images)
context = {
'crafts': crafts,
'images': images
}
templates.py
{% for craft in crafts %}
<div style="background-image: url('{% static 'images.image.url' %}');"></div>
{% endfor %}
使用
解决了
<div style="background-image: url('{{ craft.images.all.first.image.url }}');"></div>
我正在尝试从查询集中获取第一个元素,该元素由模板中的 ManyToManyField
模型字段返回。
models.py
class CraftImage(models.Model):
image = models.ImageField(upload_to='crafts_images/', null=True)
class Craft(models.Model):
title = models.CharField(max_length=100, null=False, blank=False)
images = models.ManyToManyField(CraftImage, blank=True, related_name='craft_images')
views.py
def work_all(request):
crafts = Craft.objects.all()
context = {
'crafts': crafts,
}
template.py
{% for craft in crafts %}
<div style="background-image: url('{{ craft.images[0].image.url }}');"></div>
{% endfor %}
像这样。
我也尝试了一些我发现对我不起作用的解决方案,例如..
views.py
crafts = Craft.objects.all()
images = Craft.objects.values_list('images').first()
print(images)
context = {
'crafts': crafts,
'images': images
}
templates.py
{% for craft in crafts %}
<div style="background-image: url('{% static 'images.image.url' %}');"></div>
{% endfor %}
使用
解决了<div style="background-image: url('{{ craft.images.all.first.image.url }}');"></div>