Django admin管理端的添加

django 1.02版本,想把应用加入到admin管理界面上,则

1.需要在应用(app里面)建立admin.py文件,内容如下:
from newtest.address.models import Address #Address是数据库里面的一个表类,也就是model里实现的类
from django.contrib import admin

admin.site.register(Address) # 对model的类进行注册

2.修改配置setting.py里的INSTALLED_APPS,加入'django.contrib.admin',
这样django才能识别管理端

3.url.py也要做相应的修改,其中要把admin对应的几个注释去掉,如
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
后面两行的注释去掉,其作用是让admin主动去发现app里面的admin.py文件
urlparterns里面的admin注释同样去掉,如下
# Uncomment the next line to enable the admin:
(r'^admin/(.*)', admin.site.root),

经过上面三个地方的修改,address这个类已经可以在admin管理端显示出来了,不过页面显示的是addressobject,
这看起来很难看,而且添加多个address实例的时候显示的还是那个,故可使用address里的一项作为名字显示在admin管理
端,例如address的实现如下
class Address(models.Model):
name =models.CharField('姓名', max_length=6, unique=True)
gender= models.CharField('性别', choices=(('M','男'), ('F','女')),max_length=1)
telphone = models.CharField('电话',max_length=20)
mobile= models.CharField('手机', max_length=11)

def__str__(self):
returnself.name.encode('utf-8')
加入了__str__这个函数,则再打开admin管理端就能够看到其显示的不是addressobject,而是输入的实例姓名了,因为django的
编码都是utf8的,所以此函数实现部分要转换为utf-8编码,当然现在django已经不用这种方式了,用unicode方式,更简洁,如下:
class Address(models.Model):
name =models.CharField('姓名', max_length=6, unique=True)
gender= models.CharField('性别', choices=(('M','男'), ('F','女')),max_length=1)
telphone = models.CharField('电话',max_length=20)
mobile= models.CharField('手机', max_length=11)

def__unicode__(self):
return self.name
这样django的管理端就不会报错了,否则会报错
posted @ 2013-05-24 11:35  M小卢  阅读(348)  评论(0编辑  收藏  举报