1、models.py
1
2
3
4
5
6
7
8
9
<code>class Business(models.Model):</code>
<code> </code><code>prodline = models.CharField(max_length=32)</code>
<code> </code><code>code =models.CharField(max_length=32,null=True,blank=True)</code>
<code>class Host(models.Model):</code>
<code> </code><code>nid = models.IntegerField(primary_key=True)</code>
<code> </code><code>hostname</code> <code>= models.CharField(max_length=32,blank=True,null=True,db_index=True)</code>
<code> </code><code>ip = models.GenericIPAddressField(blank=True,null=True,db_index=True)</code>
<code> </code><code>port = models.IntegerField(blank=True)</code>
<code> </code><code>prodline = models.ForeignKey(Business,to_field=</code><code>'id'</code><code>,on_delete=models.DO_NOTHING,null=True,blank=True)</code>
2、数据
<a href="https://s3.51cto.com/wyfs02/M01/99/0F/wKiom1lDd2KAsOQwAAC9aC4ngQ4275.png" target="_blank"></a>
3、views.py
<code>from django.shortcuts </code><code>import</code> <code>render</code>
<code>from models </code><code>import</code> <code>*</code>
<code># Create your views here.</code>
<code>def business(request):</code>
<code> </code><code>prodline1 = Business.objects.all()</code>
<code> </code><code>prodline2 = Business.objects.all().values(</code><code>'id'</code><code>,</code><code>'code'</code><code>)</code>
<code> </code><code>prodline3 = Business.objects.all().values_list(</code><code>'id'</code><code>,</code><code>'code'</code><code>)</code>
<code> </code><code>return</code> <code>render(request,</code><code>'business.html'</code><code>,{</code><code>'prodline1'</code><code>:prodline1,</code><code>'prodline2'</code><code>:prodline2,</code><code>'prodline3'</code><code>:prodline3})</code>
分析:这里prodline1、prodline2、prodline3数据类型都是QuerySet,但内部数据是不同类型的。
prodline1内部是对象,prodline2内部是字段,prodline3内部是元组。
我们可以通过python manage.py shell 在命令行查看他们内部数据结构类型和数据结构
10
11
12
13
14
15
16
<code>>>> from study.models </code><code>import</code> <code>*</code>
<code>>>> proline1 = Business.objects.all()</code>
<code>>>> print </code><code>type</code><code>(proline1)</code>
<code><class </code><code>'django.db.models.query.QuerySet'</code><code>></code>
<code>>>> prodline1 = Business.objects.all()</code>
<code>>>> prodline1</code>
<code>[<Business: Business object>, <Business: Business object>, <Business: Business object>, <Business: Business object>]</code>
<code>>>> prodline2 = Business.objects.all().values(</code><code>'id'</code><code>,</code><code>'code'</code><code>)</code>
<code>>>> prodline2</code>
<code>[{</code><code>'code'</code><code>: u</code><code>'SPMS'</code><code>, </code><code>'id'</code><code>: 1}, {</code><code>'code'</code><code>: u</code><code>'IPMS'</code><code>, </code><code>'id'</code><code>: 2}, {</code><code>'code'</code><code>: u</code><code>'CPMS'</code><code>, </code><code>'id'</code><code>: 3}, {</code><code>'code'</code><code>: u</code><code>'AMS'</code><code>, </code><code>'id'</code><code>: 4}]</code>
<code>>>> prodline3 = Business.objects.all().values_list(</code><code>'id'</code><code>,</code><code>'code'</code><code>)</code>
<code>>>> prodline3</code>
<code>[(1, u</code><code>'SPMS'</code><code>), (2, u</code><code>'IPMS'</code><code>), (3, u</code><code>'CPMS'</code><code>), (4, u</code><code>'AMS'</code><code>)]</code>
prodline1 获取到的是一个个对象组成的列表(也可以说是集合)。
prodline2 获取到的也是一个个字典组成的列表(也可以说是集合)。
proline3 获取到的是一个个元组组成的列表(也可以说是集合)。
templates模板中如何分别通过对象、字典、元组来循环取值?
business.html
17
18
19
20
21
22
23
24
25
26
27
<code><!DOCTYPE html></code>
<code><</code><code>html</code> <code>lang</code><code>=</code><code>"en"</code><code>></code>
<code><</code><code>head</code><code>></code>
<code> </code><code><</code><code>meta</code> <code>charset</code><code>=</code><code>"UTF-8"</code><code>></code>
<code> </code><code><</code><code>title</code><code>></</code><code>title</code><code>></code>
<code></</code><code>head</code><code>></code>
<code><</code><code>body</code><code>></code>
<code> </code><code><</code><code>h1</code><code>>业务线列表(对象)</</code><code>h1</code><code>></code>
<code> </code><code><</code><code>ul</code><code>></code>
<code> </code><code>{% for row in prodline1 %}</code>
<code> </code><code><</code><code>li</code><code>>{{ row.id }}-{{ row.code }}-{{ row.prodline }}</</code><code>li</code><code>></code>
<code> </code><code>{% endfor %}</code>
<code> </code><code></</code><code>ul</code><code>></code>
<code> </code><code><</code><code>h1</code><code>>业务线列表(字典)</</code><code>h1</code><code>></code>
<code> </code><code>{% for row in prodline2 %}</code>
<code> </code><code><</code><code>li</code><code>>{{ row.id }}-{{ row.code }}</</code><code>li</code><code>></code>
<code> </code><code><</code><code>h1</code><code>>业务线列表(元组)</</code><code>h1</code><code>></code>
<code> </code><code>{% for row in prodline3 %}</code>
<code> </code><code><</code><code>li</code><code>>{{ row.0 }}-{{ row.1 }}</</code><code>li</code><code>></code>
<code></</code><code>body</code><code>></code>
<code></</code><code>html</code><code>></code>
首先:模板语法取值都是使用“.“,对象和字典的取值方法一样,点后面接字段名,而元组则是使用索引来取值,索引从0开始。
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1937465,如需转载请自行联系原作者