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管理端显示出来了,不过页面显示的是address object,
这看起来很难看,而且添加多个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):
          return self.name.encode('utf-8')
加入了__str__这个函数,则再打开admin管理端就能够看到其显示的不是address object,而是输入的实例姓名了,因为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的管理端就不会报错了,否则会报错

你可能感兴趣的:(django,python,职场,admin,休闲)