后台篇
1、如果在 admin 中取消注册默认的应用(模型)?
比如在安装了 Django APScheduler 执行定时任务时,它默认会注册两个模型并出现在 admin 页面中,此时可通过在应用的 admin.py 文件中使用如下代码在后台中隐藏掉这部分的显示:
1 2 3 4 |
from django_apscheduler.models import DjangoJob, DjangoJobExecution admin.site.unregister(DjangoJob) admin.site.unregister(DjangoJobExecution |
2、如何在后台的表单中禁止某些字段的编辑?
这个操作比较简单,只需在admin.py的XxxAdmin中添加:
1 |
readonly_fields = ['xxx', 'xxx', 'xxx', 'xxx'] |
常用的还有list_display,list_filter,search_fields,inlines等,使用行内编辑时需填写类似Xxx_Inline的值,定义可参考:
1 2 |
class Xxx_Inline(admin.TabularInline): model = Xxx |
3、如何对后台表单中的字段进行分组?
同样在 admin.py 中进行配置,参照如下:
1 2 3 4 5 6 7 8 |
fieldsets = ( ('基本信息', { 'fields': ('nickname', 'homepage', 'email', 'mobile'), }), ('用户评价', { 'classes': ('collapse',), 'fields': ('language_skill', 'communcation_level'), }), |
4、如何在后台列表页面将链接显示为可点击文本?
后台列表页的字段通过list_display进行指定,以主页为例,我们可以在 models.py 中定义一个home_link方法并将其添加到list_display中:
1 2 3 4 |
def home_link(self): from django.utils.safestring import mark_safe return mark_safe("<a href='"+self.homepage+"' target='_blank'>点此访问</a>") home_link.short_description = '主页网址' |
DRF篇
1、’AutoSchema’ object has no attribute ‘get_link’
配置文件中添加
1 2 3 4 5 |
REST_FRAMEWORK = { ... 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema', ... } |