Django admin
创建超级用户
python manage.py createsuperuser
注册需要在admin中使用的表
# admin.py from django.contrib import admin from app01 import models # 导入models admin.site.register(models.Author) # 注册models中的表 admin.site.register(models.Book) admin.site.register(models.Publish)
自定义admin样式
# admin.py from django.contrib import admin from app01 import models # 导入models
def set_price(modelAdmin,request,queryset): # 这个方法用于admin中action下拉列表加功能
queryset.update(pirce=500)
set_price.short_description = '修改价格为500'
class BookAdmin(admin.ModelAdmin): # 自己定义一个类
list_display = ('id','name','price','pub_date') # 列表显示字段
list_editable = ('name', 'price') # 设置列表显示的哪些字段可直接修改
filter_horizontal = ('authors'), # 设置作者多选字段可筛选
list_per_page = 3 # 每页显示的记录数,默认为20
search_fields = ('id', 'name', 'publish__name') # 设置可按哪些字段进行搜索
list_filter = ('pub_date', 'publish') # 在右边出现一个根据定义的字段filter菜单
ordering = ('puice',) # 显示时以价格升序
ordering = ('-price', 'id',) #显示时以价格降序,第二排序字段为id升序
actions = [set_price,] # 向action下拉列表增加set_price功能
admin.site.register(models.Author) # 注册models中的表 admin.site.register(models.Book,BookAdmin) admin.site.register(models.Publish)
# models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的表名 # 如没有自定义主键,django会自动添加一个主键,字段名id 自增 name = models.CharField(max_length=20,verbose_name='书名') # 在admin中显示字段名为书名 price = models.IntegerField(‘价格’) # 如果verbose_name设置为第一个参数,可不用写verbose_name pub_date = models.DateField() # 字段名pub_date 类型 date (时间戳) publish = models.ForeighKey('Publish') # 创建外键关联到Publish表的id字段,django会自动将该名称改为publish_id # 如果这样写 publish = models.ForeighKey(Publish) 括号内无引号,则必须将Publish类放到Book类的上面 authors = models.ManyToManyField('Author') 将book与author表做多对多关系 # django会自动创建一张表(book与author的中间关联表)名称为appname_book_authors def __str__(self): return self.name # 打印实例对象时显示为self.name #class Book_Author(models.Model): 自己创建第三张表 # book = models.ForeignKey('book') # author = models.ForeignKey('Author') class Publish(models.Model): name = models.CharField(max_length=32) city = models.CharField(max_length=32) class Author(models.Model): name = models.CharField(max_length=32) age = models.IntegerField() def __str__(self): return self.name