gpt4 book ai didi

django - Django 模板中的 QuerySet 、 Tuple 、 Dictionary 有什么区别

转载 作者:行者123 更新时间:2023-12-04 16:48:58 24 4
gpt4 key购买 nike

我无法理解如何在 Django 中迭代 QuerySet 、 Tuple 和 Dictionarty 。

我很困惑哪些 djnago 函数返回的是 objects.all 或 objects.get

假设我有

a = model.objects.all()
b = model.object.get(pk=1)
c = Blog.objects.values('name', 'entry__headline')
d = Entry.objects.values_list('id', 'headline')
e = Person.objects.raw('SELECT * FROM myapp_person')

每个场景中返回的是什么,最大的问题是我如何迭代。
所有这些都让我很困惑。我研究了文档,但它们只讲一件事,不讲如何在模板中使用。我知道它与 python 相关,但是 python 没有模板来处理

最佳答案

查询集 :处理 SQL 响应并返回表示结果的 python 构造的 Django 类。尽管它在很多方面都像一个列表,但它实际上是所谓的“可迭代”。它只是模拟列表的行为,以允许您在其上使用诸如 for 循环之类的东西。

元组 : 一个不可变的列表。这意味着一旦设置,就无法更改。在几乎所有其他方式中,它的行为就像一个列表。

字典 : 在其他语言中也称为散列。它可以被认为是一个“键控列表”。严格意义上的“列表”是一组连续存储在内存中的项目。在过去的编程时代,您必须“弹出”项目并将项目“推”到列表中,并且只能以 FIFO 或先进先出的方式检索它们。字典提供了一种在列表中“查找”项目的方法。它由键值对组成,因此您可以引用一个键并获取附加值。

现在就 Django 模板而言:

查询集 :您使用标准方法迭代这些。一旦你得到类似 MyModel.objects.all() 的结果,您可以使用 {% for value in queryset %}标签。

元组 :就迭代而言,这些行为与标准列表完全相同。您也可以简单地使用 {% for value in tuple %}标签。唯一可能出现的问题是,有时您最终会得到元组的元组或元组列表。这些就像多级列表。您必须遍历外部列表或元组,然后遍历内部列表或元组。

字典 :这些可能是最复杂的,只是因为它们需要调用方法来获取可迭代对象。

mydict.iteritems() # returns an iterable consisting of `(key, value)` tuples.

mydict.iterkeys() # returns an iterable consisting of the keys. You can then use mydict[key] to get the values

mydict.itervalues() # returns an iterable consisting of the values.

最后一种方法可能是 Django 模板中最好的简单迭代:
{% for value in mydict.itervalues %}

关于django - Django 模板中的 QuerySet 、 Tuple 、 Dictionary 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com