ForeignKey,ManyToManyField与OneToOneField分别在Model中定义多对一,多对多,一对一关系。
ForeignKey
加入数据库中要建立两张表,userlist和UserTpye。
Userlist表的字段有
1
|
[
'username'
,
'password'
,
'Gender'
,
'Age'
,
'memo'
,
'TypeID'
]
|
UserType表的字段有
1
|
['name]
|
这里的name值只有三个,管理员,超级管理员,普通用户。
现在希望Userlist和UserType两张表关联起来,即Userlist中有一个TypeID的字段,其值为UserType表的限定的三个值。也就是说Userlist中TypeID只能为管理员、超级管理员或者普通用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#coding:utf8
from
django.db
import
models
class
Userlist(models.Model):
username
=
models.CharField(max_length
=
50
)
password
=
models.CharField(max_length
=
50
)
male
=
{
(
'man'
, u
'男'
),
(
'woman'
, u
'女'
),
}
Gender
=
models.CharField(max_length
=
50
,blank
=
True
,
choices
=
male)
Age
=
models.IntegerField(default
=
'20'
)
memo
=
models.TextField(default
=
'xxx'
)
#CreateDate = models.DateTimeField(default='2012-1-2 12:00')
TypeID
=
models.ForeignKey(
'UserType'
)
class
UserType(models.Model):
name
=
models.CharField(max_length
=
50
)
def
__unicode__(
self
):
return
self
.name
|
这里UserType 返回的是name信息,是为了在后台管理界面中,在编辑Userlist表时,UserType字段显示UserType对象的name属性,即“管理员,超级管理员,普通用户”
admin.py代码:
1
2
3
4
5
6
7
8
9
10
11
|
from
django.contrib
import
admin
from
learn.models
import
*
# Register your models here.
class
UserlistAdmin(admin.ModelAdmin):
list_display
=
[
'username'
,
'password'
,
'Gender'
,
'Age'
,
'memo'
,
'TypeID'
]
admin.site.register(Userlist,UserlistAdmin)
class
UserTypeAdmin(admin.ModelAdmin):
list_display
=
[
'name'
,
'id'
]
admin.site.register(UserType,UserTypeAdmin)
|
这里UserType表显示了id字段,默认每张表都有id字段,并且是自增的。
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1901751,如需转载请自行联系原作者