首先找到
说明我们的django下载成功了
但因为环境变量的问题,无法实现这个django-admin命令
故我们在pycharm的终端里操作
输入:
django-admin startproject newpro
即可创建django项目了
from django.contrib import admin from .models import Article from django.utils.html import format_html
class ArticleAdmin(admin.ModelAdmin): # Custom admin list view list_display = ('title', 'author', 'status', 'create_date', ) # list_display_links = ('title', ) # default # sortable_by # a sub set of list_display. All fields are sortable by default.
'''define which fields are editable on list view'''
list_editable = ('status', )
'''10 items per page'''
list_per_page = 5
'''Max 200 when clicking show all'''
list_max_show_all = 200 #default
'''Calling select related objects to reduce SQL queries'''
list_select_related = ('author', )
'''Render a search box at top. ^, =, @, None=icontains'''
search_fields = ['title']
'''Render date options at top. do not accept tuple'''
date_hierarchy = 'create_date'
'''Replacement value for empty field'''
empty_value_display = 'NA'
'''filter options'''
list_filter = ('status', 'author__is_superuser', )
admin.site.register(Article, ArticleAdmin)
class ArticleAdmin(admin.ModelAdmin):
# Custom admin list view
list_display = ('title', 'author', 'status', 'create_date', 'custom_date', )
'''中间省略'''
'''custom field on list view'''
def custom_date(self, obj):
return format_html(
'<span style="color: red;">{}</span>',
obj.create_date.strftime("%Y-%m-%d %H:%M:%S")
)
custom_date.short_description = '定制格式及颜色'
- 重写save_model方法
在前例中,我们在创建文章时手动选择作者是非常愚蠢的行为,我们完全可以在创建模型实例时将当前用户与文章作者相关联(哪个登录用户添加的文章哪个就是作者)。首先你可以通过fields或exclude选项或自定义form把author字段从添加和修改表单中移除,然后重写save_model方法将当前用户设为作者。在这里我们还使用了更高级的fieldsets选项,在定义fields时把author排除在外,还将status选项的样式设为collapse(折叠)。
再次修改admin.py
Register your models here.
class ArticleAdmin(admin.ModelAdmin):
# Custom admin list view
list_display = ('title', 'author', 'status', 'create_date', 'custom_date', )
'''中间省略'''
fieldsets = (
(None, {
'fields': ('title', 'body', ),
'classes': ('extrapretty', ),
}),
('Advanced options', {
'classes': ('collapse',),
'fields': ('status', ),
}),
)
'''Custom model methods'''
def save_model(self, request, obj, form, change):
# If creating new article, associate request.user with author.
if not change:
obj.author = request.user
super().save_model(request, obj, form, change