欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Django(九)admin相关知识

发布时间:2024/8/24 编程问答 46 如意码农
生活随笔 收集整理的这篇文章主要介绍了 Django(九)admin相关知识 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

https://www.cnblogs.com/yuanchenqi/articles/6083427.htm

https://www.cnblogs.com/haiyan123/p/8034430.html

Django admin :关于数据库的一个后台管理工具

  admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,

它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能,下面这一系列文章就逐步深入介绍如何定制适合自己的admin应用。

如果你觉得英文界面不好用,可以在setting.py 文件中修改以下选项

LANGUAGE_CODE = 'en-us'  #LANGUAGE_CODE = 'zh-hans'

一  认识ModelAdmin

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

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

<1>   使用register的方法

admin.site.register(Book,MyAdmin)

  <2>   使用register的装饰器

@admin.register(Book)

三 掌握一些常用的设置技巧

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

创建超级管理员

python manage.py createsuperuser

登陆admin

from django.db import models

# Create your models here.

class Book(models.Model):
name = models.CharField(max_length=32)
price = models.IntegerField()
pub_date = models.DateField()
publish = models.ForeignKey("Publish",on_delete=models.CASCADE)
authors = models.ManyToManyField("Author") def __str__(self):
return self.name class Publish(models.Model):
name = models.CharField(max_length=32)
city = models.CharField(max_length=32) def __str__(self):
return self.name class Author(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField() def __str__(self):
return self.name # class Book_Author(models.Model):
# book = models.ForeignKey("Book", on_delete=models.CASCADE)
# author = models.ForeignKey("Author", on_delete=models.CASCADE)

models

admin.py

from django.contrib import admin
from app import models
# Register your models here. admin.site.register(models.Book)
admin.site.register(models.Publish)
admin.site.register(models.Author)

自定义admin样式

admin.py

from django.contrib import admin
from app import models
# Register your models here. class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date') admin.site.register(models.Book,BookAdmin)
admin.site.register(models.Publish)
admin.site.register(models.Author)

注意:list_display不可以加多对多的关系

此时price,pub_date不可以直接在页面上edit,需要点击书名进入修改页面,若想直接修改,需要再加一个字段

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')

增加字段选择author, filter_horizontal

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)

list_per_page

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2

search_fields

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2
search_fields = ('name','id','publish__name')

list_filter

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2
search_fields = ('name','id','publish__name')
list_filter = ('pub_date','publish')

verbose_name

class Book(models.Model):
name = models.CharField(max_length=32,verbose_name="姓名")
price = models.IntegerField("价格")
pub_date = models.DateField()
publish = models.ForeignKey("Publish",on_delete=models.CASCADE)
authors = models.ManyToManyField("Author")

ording

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
# list_per_page = 2
search_fields = ('name','id','publish__name')
list_filter = ('pub_date','publish')
ordering = ('-price',) # 加"-"倒序

总结

以上是生活随笔为你收集整理的Django(九)admin相关知识的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。