1、前文提到过,admin应用是建立Django项目时自动创建好的,现在,只要将需要管理的信息注册到admin应用即可。
在models.py中增加:
from  django.contrib  import  admin
admin.site.register((Actor, Publisher, Film))

2、修改settings.py,将admin加入到 INSTALLED_APPS 列表中:
INSTALLED_APPS  =  (
    
' django.contrib.auth ' ,
    
' django.contrib.contenttypes ' ,
    
' django.contrib.sessions ' ,
    
' django.contrib.sites ' ,
    
' django.contrib.admin ' ,
    
' mysite.film ' ,
)
由于更改了app列表,需重新执行一次syncdb,否则会报错:
TemplateSyntaxError at  / admin /
Caught an exception 
while  rendering: ( 1146 " Table 'mysite.django_admin_log' doesn't exist " )


3、修改mysite/urls.py,将 (r'^admin/(.*)', admin.site.root),一行的注释去掉。并导入admin
    urls.py就是负责将url转化为对view调用的映射文件,其格式是(url,view)对。一般url都使用正则表达式。
from  django.conf.urls.defaults  import   *
from  django.contrib  import  admin

admin.autodiscover()

urlpatterns 
=  patterns( '' ,
    (r
' ^admin/(.*) ' , admin.site.root),
)

4、登录 http://127.0.0.1:8000/admin即可对现有数据表进行管理。

5、界面是英文,有点小不爽。修改settiings.py,然后刷新。嗯,变成中文了。
TIME_ZONE  =   ' CCT '
LANGUAGE_CODE 
=   ' zh-CN '

6、登录,试试增加新Actor,发现什么first name,last name的,不爽。改models
class  Actor(models.Model):
    first_name 
=  models.CharField( ' ' , max_length = 30 )
    last_name 
=  models.CharField( ' ' , max_length = 30 )
    birthday 
=  models.DateField( ' 生日 ' )
    注意,有3种类型的域不能按如上方式添加自定义名称:ManyToManyField,OneToOneField,ForeignKey。而应该显示指定:
class  Film(models.Model):
    title 
=  models.CharField( ' 片名 ' , max_length = 100 )
    actors 
=  models.ManyToManyField(Actor,verbose_name = ' 演员 ' )
    pub_date 
=  models.DateField( ' 发行日期 ' )
    publisher 
=  models.ForeignKey(Publisher,verbose_name = ' 发行商 ' )

7、重新刷新,发行全部变成中文了。添加几个演员试试。:-)

8、添加完成,返回演员列表,发现,演员列表全是Actor Object…………
    这是因为,Django只是列出了所以的Actor,因为它们全是对象,所以就显示Actor Object。但这里,我们想显示的是演员的名字,Python内置的__str__方法正好完成这一功能。但__str__返回的是ascii编码,这里的演员名字用到了中文,因此__str__不能满足需要,应该使用__unicode__返回unicode编码:
# coding=utf8
from  django.db  import  models

#  演员
class  Actor(models.Model):
    first_name 
=  models.CharField( ' ' , max_length = 30 )
    last_name 
=  models.CharField( ' ' , max_length = 30 )
    birthday 
=  models.DateField( ' 生日 ' )
    
def   __unicode__ (self):
        
return  self.last_name + self.first_name

#  发行商
class  Publisher(models.Model):
    name 
=  models.CharField( ' 发行商 ' , max_length = 30 )
    
def   __unicode__ (self):
        
return  self.name

#  影片
class  Film(models.Model):
    title 
=  models.CharField( ' 片名 ' , max_length = 100 )
    actors 
=  models.ManyToManyField(Actor, verbose_name = ' 演员 ' )
    pub_date 
=  models.DateField( ' 发行日期 ' )
    publisher 
=  models.ForeignKey(Publisher, verbose_name = ' 发行商 ' )
    
def   __unicode__ (self):
        
return  self.title

from  django.contrib  import  admin
admin.site.register((Actor, Publisher, Film))
 
    这是models.py最后的完整代码。刷新一下admin,看看,名字是不是显示出来了? :-)