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,如需轉載請自行聯系原作者