如何从带有模板标签的查询集中访问模型属性?

Posted

技术标签:

【中文标题】如何从带有模板标签的查询集中访问模型属性?【英文标题】:How can I access a model attribute from a queryset with a template tag? 【发布时间】:2020-02-02 05:05:15 【问题描述】:

我已使用 get_context_data() 方法将以下模型的对象添加到我的视图中。

models.py:

class Icon(models.Model):
    icon_name       = models.CharField(max_length=100, default='iconset')
    icon            = models.ImageField(upload_to='machine_icon/', null=True, blank=True)

    def __str__(self):
        return str(self.icon_name)

views.py

class MachineSorter(DetailView):
    model = MachineCount
    template_name = 'brands/machines.html'

    def get_context_data(self, **kwargs):
        context = super(MachineSorter, self).get_context_data(**kwargs)
        context['icon'] = Icon.objects.all()
        return context

我可以轻松地循环浏览图标并像这样显示它们:

    % for obj in icon %
    <img src=" obj.icon.url "> 
    % endfor %

但我想遍历它们,我只想在需要的地方访问单个图标图像,例如:

<img src=" icon.name.url "> 

...或类似的东西。在视图中使用附加上下文时,我看到的示例都使用循环。我在这里想念什么?任何帮助将不胜感激。

【问题讨论】:

查询集是图标的集合,因此它包含、一个或多个项。因此,获得这样的属性没有多大意义。如果集合为空,该怎么办?还是包含多个项目? 好的,谢谢。不过,也许我没有问清楚。我要问的是是否可以使用 django 模板标记语言直接调用(显示)我的查询集中的一个图标,而不是如图所示的循环。 【参考方案1】:

您是否尝试通过查询来检索您需要的内容?

https://docs.djangoproject.com/en/2.2/topics/db/queries/#retrieving-objects

【讨论】:

以上是关于如何从带有模板标签的查询集中访问模型属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何从车把模板访问主干模型的计算字段?

如何从查询集中批量复制和更改许多模型的属性?

如何从 django 模板访问多对多“通过”表的属性?

如何从 Marionette.js ItemView 模板访问 Backbone.Model 方法?

从 t4 脚手架模板访问我的模型中的元数据(数据注释)

如何在 Jquery 中访问模型属性(列表)