Django~Admin

admin

django amdin是django提供的一个后台管理页面,给管理页面提供完善的html和css,使得你在通过Model创建完数据库表之后,就可以对数据进行增删改查,它是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能,下面这一系列文章就逐步深入介绍如何定制适合自己的admin应用。

1 首先我们用pycharm创建一个Django项目

2 创建数据库表(app01下的models.py)

from django.db import models

# Create your models here.
class Publisher(models.Model):
   name = models.CharField(max_length=30, verbose_name="名称")
   address = models.CharField("地址", max_length=50)
   city = models.CharField('城市', max_length=60)
   state_province = models.CharField(max_length=30)
   country = models.CharField(max_length=50)
   website = models.URLField()
   class Meta:
       verbose_name = '出版商'
       verbose_name_plural = verbose_name

   def __str__(self):
       return self.name

class Author(models.Model):
   name = models.CharField(max_length=30)

   def __str__(self):
       return self.name

class AuthorDetail(models.Model):
   sex = models.BooleanField(max_length=1, choices=((0, '男'), (1, '女'),))
   email = models.EmailField()
   address = models.CharField(max_length=50)
   birthday = models.DateField()
   author = models.OneToOneField(Author, on_delete=None)

class Book(models.Model):
   title = models.CharField(max_length=100)
   authors = models.ManyToManyField(Author)
   publisher = models.ForeignKey(Publisher, on_delete=None)
   publication_date = models.DateField()
   price = models.DecimalField(max_digits=5, decimal_places=2, default=10)
   def __str__(self):
       return self.title

3 注册和配置django admin 后台管理页面

注册medel类到admin的两种方式:

<1>   使用register的方法
admin.site.register(Book,MyAdmin)
<2>   使用register的装饰器
@admin.register(Book)

认识ModelAdmin

管理界面的定制类,如需扩展特定的model界面需从该类继承。

app01下的admin.py

from django.contrib import admin
# Register your models here.
from app01.models import *
# Register your models here.
# @admin.register(Book)#----->单给某个表加一个定制
class MyAdmin(admin.ModelAdmin):
   list_display = ("title","price","publisher")
   search_fields = ("title","publisher__name")
   list_filter = ("publisher__name",)
   ordering = ("price",)
   fieldsets =[
       (None,               {'fields': ['title']}),
       ('price information', {'fields': ['price',"publisher","publication_date"], 'classes': ['collapse']}),
   ]
admin.site.register(Book,MyAdmin)
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(AuthorDetail)
  •  list_display:     指定要显示的字段

  •  search_fields:  指定搜索的字段

  •  list_filter:        指定列表过滤器

  •  ordering:       指定排序字段

  •  fieldsets:      分组显示

4 打开terminal,同步数据库,并创建管理员用户

同步数据库

python manage.py makemigrations

python manage.py migrate

并创建管理员用户

python manage.py createsuperuser

5 管理界面默认是英文,可以在setting.py 文件中修改以下选项,变成中文

LANGUAGE_CODE = 'zh-hans'

6 启动项目,访问http://127.0.0.1:8000/admin,界面如下

7 输入刚才创建的管理员用户名和密码

8 之后就可以对数据进行增删改查了,怎么样?是不是很强大!


识别图中二维码,领取python全套视频资料

猜你喜欢

转载自www.cnblogs.com/IT-Scavenger/p/9292784.html