tej*_*tan 5 django django-templates django-views
我无法理解如何在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')
Run Code Online (Sandbox Code Playgroud)
每个场景中的回归是什么,最大的问题是如何迭代.所有这些让我非常困惑.我研究文档,但他们告诉一件事,不告诉如何在模板中使用.我知道它与python有关但是python没有模板可以处理
Chr*_*att 10
QuerySet:一个Django类,它处理SQL响应并返回表示结果的python结构.虽然它在很多方面都像列表一样运行,但它实际上就是所谓的"可迭代".它只是嘲笑列表的行为,允许你在其上使用for-loops之类的东西.
元组:一个不可变的列表.这意味着一旦设定,就无法改变.几乎所有其他方式,它的行为就像一个列表.
字典:也称为其他语言的哈希.它可以被认为是"键控列表".最严格意义上的"列表"是串行存储在存储器中的一组项目.在编程的旧时代,您必须关闭"弹出"项目并将项目"推送"到列表中,并且它们只能以FIFO或先进先出的方式检索.字典提供了一种在列表中"查找"项目的方法.它由键值对组成,因此您可以引用键并获取附加值.
现在就Django模板而言:
QuerySets:您使用标准方法迭代这些.一旦你得到类似的结果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.
Run Code Online (Sandbox Code Playgroud)
最后一种方法可能是Django模板中最好的简单迭代:
{% for value in mydict.itervalues %}
Run Code Online (Sandbox Code Playgroud)
您指的是这些文档吗?https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
我想这就是你正在寻找的。
基本上你可以像这样迭代它们:
{% for item in a %}
{{item.field}}
{{item.field2}}
{% endfor %}
{{b.field}}
{% for item in c %}
{{item.name}}
{{item.entry__headline}}
{% endfor %}
{% for item in d %}
{{item}}
{% endfor %}
# Also you can do this if you want to access just a particular index:
{{d.0}}
{{d.1}}
{% for item in e %}
{{item.field}}
{{item.field2}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
至于您的数据类型:
a 将是 QuerySet 或模型对象列表
b 将是模型对象
c 将是 ValuesQuerySet 或字典列表
d 也将是 ValuesQuerySet 但它实际上是元组列表
e 将是 RawQuerySet ,它的作用就像一个普通的查询集
来源:
https://docs.djangoproject.com/en/dev/topics/db/sql/#django.db.models.Manager.raw
https://docs.djangoproject.com/en/dev/ref/models/ querysets/#values
https://docs.djangoproject.com/en/dev/ref/models/querysets/#values-list
| 归档时间: |
|
| 查看次数: |
2751 次 |
| 最近记录: |