Django模型对象有长度函数吗?

5lhxktic  于 2022-12-20  发布在  Go
关注(0)|答案(2)|浏览(99)

我已经在循环范围内硬编码了3,因为我无法得到实际的长度。我尝试列出可用的特性,但没有找到任何print(dir(Todo_Item.objects))。也许还有其他更好的方法来迭代对象并在它结束时停止?这是我在循环范围内硬编码了3的代码。

def home_view(request):
display_list = []
for i in range(3):
    display_list.append(Todo_Item.objects.get(id=i+1).task)
.......some code below as well.......

我的Todo应用运行正常,没有任何错误,但唯一的问题是这个非动态循环。

vktxenjb

vktxenjb1#

如果您不需要任何过滤,您可以这样做:

todo_items = Todo_Item.objects.all()
for item in todo_items:
    print(item.task)

你也可以把它迭代到你的模板中:

{% for item in todo_items %}
        <li>{{ item.task }}</li>
{% endfor %}

初步将todo_items添加到渲染上下文中。

sqxo8psd

sqxo8psd2#

我对Django有点生疏了,但我认为你需要的是一次获取所有的Todo_Items并迭代它们。为此,你可能需要使用all()方法来获取整个QuerySet。这样,你就可以迭代它返回的每一项:

def home_view(request):
    display_list = []
    todo_items = Todo_Item.objects.all()
    for item in todo_items:
        display_list.append(item.task)
    .......some code below as well.......

再次声明,我对Django的使用非常生疏,但我认为还有一种方法可以一次性为您选择的每一项获取task值,但我不记得具体是怎么做的了。Django有一个强大的查询语法,所以请查看这些页面来了解更多:
https://docs.djangoproject.com/en/3.1/topics/db/queries/https://docs.djangoproject.com/en/3.1/ref/models/querysets/

相关问题