我有两个模特(项目和专辑)。 相册有一个指向Item的外键 像这样
class Item(models.Model):
name = models.CharField(max_length=50)
price = models.IntegerField()
和
class Album(models.Model):
photo = ImageField(upload_to=item_directory_path)
caption = models.CharField(max_length=100, blank=True)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
default = models.BooleanField(default=True)
在我的模板中
{% for item in item_tags %}
<div class="item-dock">
<a href="{{item.name}}">
<img src="{{item.album_set.photo.filter(default=True)}}" class="img-responsive">
<p class="item-name text-center">{{item.name|capfirst}}</p>
</a>
现在真正的问题是。鉴于查询相关模型将始终返回查询集。如何从模板中的项目的相册模型中检索单个对象(在本例中为此查询集中的单个照片,其中“default = True”)。
我了解queryset和相关经理!
任何帮助,建议将不胜感激
答案 0 :(得分:1)
只要查询第一个元素即可。
# something like this in your template
{% item.album_set.first.photo %}
答案 1 :(得分:0)
您可以使用自定义模板过滤器: 有关创建和使用自定义模板标记和过滤器的详细信息,请访问: https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/
from django import template
register = template.Library()
def default_image(queryset):
return queryset.get(default=True).photo.url
register.filter('default_image', default_image)
您可以在模板中使用它,如下所示:
{{ item.album_set|default_image }}
请记住,在使用过滤器之前,您需要{%加载your_custom_template_tags%}