我是Django的新手,我试图通过在Django中创建自定义标签来使数据可用于其他应用程序中的模板。
我的model.py
from django.db import models
class my_Model(models.Model):
name = models.CharField(max_length=20)
age = models.CharField(max_length=20)
我的自定义标记文件templatetag/custom_tag.py
(为什么这样做是为了使我的数据可被不同应用程序中的模板访问)
from django import template
from model_file.models import my_Model
register = template.Library()
@register.simple_tag
def get_custom_tag_fn():
return my_Model.objects.order_by('-pk')[0]
我的html文件
{% load custom_tag %}
{% get_custom_tag_fn as ct %}
{% for item in ct %}
<p> {{ item }} </p>
{% endfor %}
我收到错误'My_Model' object is not iterable
。关于如何解决这个问题的任何想法。
答案 0 :(得分:0)
问题在这里:
return my_Model.objects.order_by('-pk')[0]
Model objects.order_by(...)返回queryset,类似于集合的列表,因此使用[0]索引获取该集合的第一个对象,该对象当然是不可迭代的(它只是一个对象)。因此,在那之后,当您尝试迭代时:
{% for item in ct %}
...
您正在捕获此错误。