diff --git a/src/DjangoBlog/blog/admin.py b/src/DjangoBlog/blog/admin.py index 46c3420..91cbeab 100644 --- a/src/DjangoBlog/blog/admin.py +++ b/src/DjangoBlog/blog/admin.py @@ -6,44 +6,44 @@ from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ # Register your models here. -from .models import Article +from .models import Article #ZNY 导入Article模型 -class ArticleForm(forms.ModelForm): - # body = forms.CharField(widget=AdminPagedownWidget()) +class ArticleForm(forms.ModelForm): #ZNY 定义文章表单类 + # body = forms.CharField(widget=AdminPagedownWidget()) #ZNY 注释掉的Markdown编辑器字段 class Meta: - model = Article - fields = '__all__' + model = Article #ZNY 指定表单对应的模型 + fields = '__all__' #ZNY 包含所有模型字段 -def makr_article_publish(modeladmin, request, queryset): - queryset.update(status='p') +def makr_article_publish(modeladmin, request, queryset): #ZNY 发布文章的管理动作函数 + queryset.update(status='p') #ZNY 将选中文章状态更新为发布 -def draft_article(modeladmin, request, queryset): - queryset.update(status='d') +def draft_article(modeladmin, request, queryset): #ZNY 设为草稿的管理动作函数 + queryset.update(status='d') #ZNY 将选中文章状态更新为草稿 -def close_article_commentstatus(modeladmin, request, queryset): - queryset.update(comment_status='c') +def close_article_commentstatus(modeladmin, request, queryset): #ZNY 关闭评论的管理动作函数 + queryset.update(comment_status='c') #ZNY 将选中文章评论状态更新为关闭 -def open_article_commentstatus(modeladmin, request, queryset): - queryset.update(comment_status='o') +def open_article_commentstatus(modeladmin, request, queryset): #ZNY 打开评论的管理动作函数 + queryset.update(comment_status='o') #ZNY 将选中文章评论状态更新为打开 -makr_article_publish.short_description = _('Publish selected articles') -draft_article.short_description = _('Draft selected articles') -close_article_commentstatus.short_description = _('Close article comments') -open_article_commentstatus.short_description = _('Open article comments') +makr_article_publish.short_description = _('Publish selected articles') #ZNY 设置管理动作显示名称 +draft_article.short_description = _('Draft selected articles') #ZNY 设置管理动作显示名称 +close_article_commentstatus.short_description = _('Close article comments') #ZNY 设置管理动作显示名称 +open_article_commentstatus.short_description = _('Open article comments') #ZNY 设置管理动作显示名称 -class ArticlelAdmin(admin.ModelAdmin): - list_per_page = 20 - search_fields = ('body', 'title') - form = ArticleForm - list_display = ( +class ArticlelAdmin(admin.ModelAdmin): #ZNY 文章模型管理类 + list_per_page = 20 #ZNY 每页显示20条记录 + search_fields = ('body', 'title') #ZNY 设置搜索字段 + form = ArticleForm #ZNY 指定使用的表单类 + list_display = ( #ZNY 设置列表页显示的字段 'id', 'title', 'author', @@ -53,60 +53,60 @@ class ArticlelAdmin(admin.ModelAdmin): 'status', 'type', 'article_order') - list_display_links = ('id', 'title') - list_filter = ('status', 'type', 'category') - filter_horizontal = ('tags',) - exclude = ('creation_time', 'last_modify_time') - view_on_site = True - actions = [ + list_display_links = ('id', 'title') #ZNY 设置可点击进入编辑页的字段 + list_filter = ('status', 'type', 'category') #ZNY 设置右侧过滤器字段 + filter_horizontal = ('tags',) #ZNY 设置标签字段使用水平过滤器 + exclude = ('creation_time', 'last_modify_time') #ZNY 排除不需要在表单中显示的字段 + view_on_site = True #ZNY 启用"在站点查看"功能 + actions = [ #ZNY 注册管理动作 makr_article_publish, draft_article, close_article_commentstatus, open_article_commentstatus] - def link_to_category(self, obj): - info = (obj.category._meta.app_label, obj.category._meta.model_name) - link = reverse('admin:%s_%s_change' % info, args=(obj.category.id,)) - return format_html(u'%s' % (link, obj.category.name)) + def link_to_category(self, obj): #ZNY 自定义方法:生成分类链接 + info = (obj.category._meta.app_label, obj.category._meta.model_name) #ZNY 获取分类模型的app和模型名称 + link = reverse('admin:%s_%s_change' % info, args=(obj.category.id,)) #ZNY 生成分类编辑页链接 + return format_html(u'%s' % (link, obj.category.name)) #ZNY 返回HTML格式的链接 - link_to_category.short_description = _('category') + link_to_category.short_description = _('category') #ZNY 设置自定义列显示名称 - def get_form(self, request, obj=None, **kwargs): - form = super(ArticlelAdmin, self).get_form(request, obj, **kwargs) - form.base_fields['author'].queryset = get_user_model( + def get_form(self, request, obj=None, **kwargs): #ZNY 重写获取表单方法 + form = super(ArticlelAdmin, self).get_form(request, obj, **kwargs) #ZNY 调用父类方法 + form.base_fields['author'].queryset = get_user_model( #ZNY 限制作者字段只能选择超级用户 ).objects.filter(is_superuser=True) - return form + return form #ZNY 返回修改后的表单 - def save_model(self, request, obj, form, change): - super(ArticlelAdmin, self).save_model(request, obj, form, change) + def save_model(self, request, obj, form, change): #ZNY 重写保存模型方法 + super(ArticlelAdmin, self).save_model(request, obj, form, change) #ZNY 调用父类保存方法 - def get_view_on_site_url(self, obj=None): - if obj: - url = obj.get_full_url() - return url - else: - from djangoblog.utils import get_current_site - site = get_current_site().domain - return site + def get_view_on_site_url(self, obj=None): #ZNY 重写获取站点查看URL方法 + if obj: #ZNY 如果有具体对象 + url = obj.get_full_url() #ZNY 获取文章的完整URL + return url #ZNY 返回文章URL + else: #ZNY 如果没有对象(列表页) + from djangoblog.utils import get_current_site #ZNY 导入获取当前站点函数 + site = get_current_site().domain #ZNY 获取当前站点域名 + return site #ZNY 返回站点域名 -class TagAdmin(admin.ModelAdmin): - exclude = ('slug', 'last_mod_time', 'creation_time') +class TagAdmin(admin.ModelAdmin): #ZNY 标签模型管理类 + exclude = ('slug', 'last_modify_time', 'creation_time') #ZNY 排除不需要在表单中显示的字段 -class CategoryAdmin(admin.ModelAdmin): - list_display = ('name', 'parent_category', 'index') - exclude = ('slug', 'last_mod_time', 'creation_time') +class CategoryAdmin(admin.ModelAdmin): #ZNY 分类模型管理类 + list_display = ('name', 'parent_category', 'index') #ZNY 设置列表页显示的字段 + exclude = ('slug', 'last_modify_time', 'creation_time') #ZNY 排除不需要在表单中显示的字段 -class LinksAdmin(admin.ModelAdmin): - exclude = ('last_mod_time', 'creation_time') +class LinksAdmin(admin.ModelAdmin): #ZNY 链接模型管理类 + exclude = ('last_modify_time', 'creation_time') #ZNY 排除不需要在表单中显示的字段 -class SideBarAdmin(admin.ModelAdmin): - list_display = ('name', 'content', 'is_enable', 'sequence') - exclude = ('last_mod_time', 'creation_time') +class SideBarAdmin(admin.ModelAdmin): #ZNY 侧边栏模型管理类 + list_display = ('name', 'content', 'is_enable', 'sequence') #ZNY 设置列表页显示的字段 + exclude = ('last_modify_time', 'creation_time') #ZNY 排除不需要在表单中显示的字段 -class BlogSettingsAdmin(admin.ModelAdmin): - pass +class BlogSettingsAdmin(admin.ModelAdmin): #ZNY 博客设置模型管理类 + pass #ZNY 使用默认管理配置