1、前文提到過,admin應(yīng)用是建立Django項(xiàng)目時(shí)自動(dòng)創(chuàng)建好的,現(xiàn)在,只要將需要管理的信息注冊(cè)到admin應(yīng)用即可。
在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列表,需重新執(zhí)行一次syncdb,否則會(huì)報(bào)錯(cuò):
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),一行的注釋去掉。并導(dǎo)入admin
    urls.py就是負(fù)責(zé)將url轉(zhuǎn)化為對(duì)view調(diào)用的映射文件,其格式是(url,view)對(duì)。一般url都使用正則表達(dá)式。
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即可對(duì)現(xiàn)有數(shù)據(jù)表進(jìn)行管理。

5、界面是英文,有點(diǎn)小不爽。修改settiings.py,然后刷新。嗯,變成中文了。
TIME_ZONE = 'CCT'
LANGUAGE_CODE 
= 'zh-CN'

6、登錄,試試增加新Actor,發(fā)現(xiàn)什么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,F(xiàn)oreignKey。而應(yīng)該顯示指定:
class Film(models.Model):
    title 
= models.CharField('片名', max_length=100)
    actors 
= models.ManyToManyField(Actor,verbose_name='演員')
    pub_date 
= models.DateField('發(fā)行日期')
    publisher 
= models.ForeignKey(Publisher,verbose_name='發(fā)行商')

7、重新刷新,發(fā)行全部變成中文了。添加幾個(gè)演員試試。:-)

8、添加完成,返回演員列表,發(fā)現(xiàn),演員列表全是Actor Object…………
    這是因?yàn)?,Django只是列出了所以的Actor,因?yàn)樗鼈內(nèi)菍?duì)象,所以就顯示Actor Object。但這里,我們想顯示的是演員的名字,Python內(nèi)置的__str__方法正好完成這一功能。但__str__返回的是ascii編碼,這里的演員名字用到了中文,因此__str__不能滿足需要,應(yīng)該使用__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

# 發(fā)行商
class Publisher(models.Model):
    name 
= models.CharField('發(fā)行商', 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('發(fā)行日期')
    publisher 
= models.ForeignKey(Publisher, verbose_name='發(fā)行商')
    
def __unicode__(self):
        
return self.title

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