admin默认登录地址
http://127.0.0.1:8000/admin
创建创建管理员账户
python manage.py createsuperuser
app01下的admin.py
from django.contrib import admin
from app01 import models
# Register your models here.
class AccountAdmin(admin.ModelAdmin):
list_display = (\'username\',\'email\',\'signature\')#显示表的字段
search_fields = (\'username\',\'email\') #模糊查找
list_filter = (\'email\',)#过滤,把要过滤的字段放到对应列表里就可以
list_per_page = 5 #按每5个数据分页
list_display_links = [\'email\',]#点下这个字段就跳到修改页
list_editable = [\'signature\',]
class ArticleAdmin(admin.ModelAdmin):
list_display = (\'title\',\'pub_date\',\'account\',\'get_tags\')
list_filter = (\'account\',\'pub_date\')
#fields = (\'title\',\'content\',(\'pub_date\',\'read_count\'))#多个字段显示在一行
#exclude = (\'read_count\',\'tags\')#不展示这些字段
date_hierarchy = "pub_date"#按日期分类显示数据
#分组显示数据
fieldsets = (
(\'文章内容\',{
\'fields\':[\'title\',\'content\'],
\'classes\': (\'wide\', \'extrapretty\'),
}),(
\'发布相关\',{
#\'classes\': (\'collapse\',),
\'fields\':(\'account\',\'pub_date\',\'tags\',\'read_count\')
}
)
)
#radio_fields = {\'account\': admin.HORIZONTAL}#把外键或choice字段由下拉框变成单选框
#autocomplete_fields = [\'account\',]#自动补全,外键查询数据多时,方便查找
raw_id_fields = [\'account\',]#id显示
filter_horizontal = (\'tags\',)#用多对多字段
readonly_fields = (\'read_count\',)#只读字段
#filter_vertical = (\'tags\',)
class TagAdmin(admin.ModelAdmin):
list_display = [\'name\',\'colored_name\']
admin.site.register(models.Account,AccountAdmin)
admin.site.register(models.Article,ArticleAdmin)
admin.site.register(models.Tag,TagAdmin)
app01下的models.py
from django.db import models
from django.utils.html import format_html
# Create your models here.
class Account(models.Model):
"""账户表"""
username = models.CharField(max_length=64,unique=True)
email = models.EmailField(unique=True)
password = models.CharField(max_length=255,blank=True)
register_date = models.DateTimeField(auto_now_add=True)
signature = models.CharField("签名",max_length=255,null=True,blank=True)
#article_set = Article
def __str__(self):
return self.username
class Article(models.Model):
"""文章表"""
title = models.CharField(max_length=255,unique=True)
content = models.TextField()
account = models.ForeignKey("Account",on_delete=models.CASCADE)
tags = models.ManyToManyField("Tag",null=True,blank=True)
pub_date = models.DateField()
read_count = models.IntegerField(verbose_name="阅读",default=0)
class Meta:
#verbose_name = "文章"
verbose_name_plural = "文章"
def get_tags(self):
return \',\'.join([i.name for i in self.tags.all()])
def get_comment(self):
return 10
def __str__(self):
return "%s - %s " %(self.title,self.account)
class Tag(models.Model):
"""标签表"""
name = models.CharField(max_length=64,unique=True)
date = models.DateTimeField(auto_now_add=True)
color_code = models.CharField(max_length=6)
def colored_name(self):
return format_html(\'<span style="color: #{};">{}</span>\',self.color_code,self.name,
)
def __str__(self):
return self.name