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  

 

posted @ 2018-09-10 21:40  四十不惑的编程之路  阅读(143)  评论(0编辑  收藏  举报