pull/2/head
nch 4 months ago
parent c476d261a7
commit 21b06a45df

@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.12" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">

@ -1,4 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13" project-jdk-type="Python SDK" />
<component name="Black">
<option name="sdkName" value="Python 3.12" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12" project-jdk-type="Python SDK" />
</project>

@ -15,28 +15,34 @@ class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = '__all__'
# 文章表单定义,可以自定义字段的显示方式
def makr_article_publish(modeladmin, request, queryset):
queryset.update(status='p')
# 批量发布文章的管理动作
def draft_article(modeladmin, request, queryset):
queryset.update(status='d')
# 批量将文章设为草稿状态的管理动作
def close_article_commentstatus(modeladmin, request, queryset):
queryset.update(comment_status='c')
# 批量关闭文章评论功能的管理动作
def open_article_commentstatus(modeladmin, request, queryset):
queryset.update(comment_status='o')
# 批量开启文章评论功能的管理动作
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')
# 为管理动作设置用户友好的显示名称
class ArticlelAdmin(admin.ModelAdmin):
@ -63,6 +69,7 @@ class ArticlelAdmin(admin.ModelAdmin):
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)
@ -70,15 +77,18 @@ class ArticlelAdmin(admin.ModelAdmin):
return format_html(u'<a href="%s">%s</a>' % (link, obj.category.name))
link_to_category.short_description = _('category')
# 自定义方法:在文章列表中显示分类链接,点击可跳转到分类编辑页面
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(
).objects.filter(is_superuser=True)
return form
# 限制作者字段只能选择超级用户,确保文章作者具有管理权限
def save_model(self, request, obj, form, change):
super(ArticlelAdmin, self).save_model(request, obj, form, change)
# 保存模型时的自定义逻辑(当前为空实现,可扩展)
def get_view_on_site_url(self, obj=None):
if obj:
@ -88,25 +98,31 @@ class ArticlelAdmin(admin.ModelAdmin):
from djangoblog.utils import get_current_site
site = get_current_site().domain
return site
# 获取文章在前端网站的URL用于"在站点中查看"功能
class TagAdmin(admin.ModelAdmin):
exclude = ('slug', 'last_mod_time', 'creation_time')
# 标签管理后台排除自动生成的字段slug、时间戳
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'parent_category', 'index')
exclude = ('slug', 'last_mod_time', 'creation_time')
# 分类管理后台,显示名称、父分类和排序索引,排除自动生成的字段
class LinksAdmin(admin.ModelAdmin):
exclude = ('last_mod_time', 'creation_time')
# 链接管理后台,排除时间戳字段
class SideBarAdmin(admin.ModelAdmin):
list_display = ('name', 'content', 'is_enable', 'sequence')
exclude = ('last_mod_time', 'creation_time')
# 侧边栏管理后台,显示名称、内容、启用状态和排序,排除时间戳字段
class BlogSettingsAdmin(admin.ModelAdmin):
pass
# 博客设置管理后台,使用默认配置

Loading…
Cancel
Save