ForeignKey,ManyToManyField與OneToOneField分别在Model中定義多對一,多對多,一對一關系。
ForeignKey
加入資料庫中要建立兩張表,userlist和UserTpye。
Userlist表的字段有
1
<code>[</code><code>'username'</code><code>,</code><code>'password'</code><code>,</code><code>'Gender'</code><code>,</code><code>'Age'</code><code>,</code><code>'memo'</code><code>,</code><code>'TypeID'</code><code>]</code>
UserType表的字段有
<code>['name]</code>
這裡的name值隻有三個,管理者,超級管理者,普通使用者。
現在希望Userlist和UserType兩張表關聯起來,即Userlist中有一個TypeID的字段,其值為UserType表的限定的三個值。也就是說Userlist中TypeID隻能為管理者、超級管理者或者普通使用者
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<code>#coding:utf8</code>
<code>from</code> <code>django.db </code><code>import</code> <code>models</code>
<code>class</code> <code>Userlist(models.Model):</code>
<code> </code><code>username </code><code>=</code> <code>models.CharField(max_length</code><code>=</code><code>50</code><code>)</code>
<code> </code><code>password </code><code>=</code> <code>models.CharField(max_length</code><code>=</code><code>50</code><code>)</code>
<code> </code><code>male </code><code>=</code> <code>{</code>
<code> </code><code>(</code><code>'man'</code><code>, u</code><code>'男'</code><code>),</code>
<code> </code><code>(</code><code>'woman'</code><code>, u</code><code>'女'</code><code>),</code>
<code> </code><code>}</code>
<code> </code><code>Gender </code><code>=</code> <code>models.CharField(max_length</code><code>=</code><code>50</code><code>,blank</code><code>=</code><code>True</code><code>,</code>
<code> </code><code>choices</code><code>=</code><code>male)</code>
<code> </code><code>Age </code><code>=</code> <code>models.IntegerField(default </code><code>=</code> <code>'20'</code><code>)</code>
<code> </code><code>memo </code><code>=</code> <code>models.TextField(default </code><code>=</code> <code>'xxx'</code><code>)</code>
<code> </code><code>#CreateDate = models.DateTimeField(default='2012-1-2 12:00')</code>
<code> </code><code>TypeID </code><code>=</code> <code>models.ForeignKey(</code><code>'UserType'</code><code>)</code>
<code>class</code> <code>UserType(models.Model):</code>
<code> </code><code>name </code><code>=</code> <code>models.CharField(max_length</code><code>=</code><code>50</code><code>)</code>
<code> </code><code>def</code> <code>__unicode__(</code><code>self</code><code>):</code>
<code> </code><code>return</code> <code>self</code><code>.name</code>
這裡UserType 傳回的是name資訊,是為了在背景管理界面中,在編輯Userlist表時,UserType字段顯示UserType對象的name屬性,即“管理者,超級管理者,普通使用者”
<a href="https://s5.51cto.com/wyfs02/M01/8E/0A/wKioL1iz-SbgQTH5AADC7cjPul4948.png" target="_blank"></a>
admin.py代碼:
<code>from</code> <code>django.contrib </code><code>import</code> <code>admin</code>
<code>from</code> <code>learn.models </code><code>import</code> <code>*</code>
<code># Register your models here.</code>
<code>class</code> <code>UserlistAdmin(admin.ModelAdmin):</code>
<code> </code><code>list_display </code><code>=</code> <code>[</code><code>'username'</code><code>,</code><code>'password'</code><code>,</code><code>'Gender'</code><code>,</code><code>'Age'</code><code>,</code><code>'memo'</code><code>,</code><code>'TypeID'</code><code>]</code>
<code>admin.site.register(Userlist,UserlistAdmin)</code>
<code>class</code> <code>UserTypeAdmin(admin.ModelAdmin):</code>
<code> </code><code>list_display </code><code>=</code> <code>[</code><code>'name'</code><code>,</code><code>'id'</code><code>]</code>
<code>admin.site.register(UserType,UserTypeAdmin)</code>
這裡UserType表顯示了id字段,預設每張表都有id字段,并且是自增的。
<a href="https://s4.51cto.com/wyfs02/M00/8E/0A/wKioL1iz-fyzOZ6rAACYg2vShlo461.png" target="_blank"></a>
本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1901751,如需轉載請自行聯系原作者