python - Django 管理站点change_list View 定制

标签 python django django-admin overriding django-modeladmin

我的 gradeScalesSettings 模型有一个 ModelAdmin 子类:

@admin.register(gradeScalesSetting)
class gradeScalesSettingAdmin(admin.ModelAdmin):
    list_display = ('configuration_select', 'NumberOfGrades', 'Rounding','Precision', 'Status',)
    change_list_template = 'admin/Homepage/view.html'

enter image description here

实际结果

点击成绩等级设置后:

enter image description here

如何将它连接到我的views.py? 这就是我想在views.py中编码的内容:

def gradescales(request):
    gradeScalesSettings = gradeScalesSetting.objects.all()
    configurations = configuration.objects.all()
    rounding = gradeScalesSetting.objects.all().values_list('Rounding', flat=True).distinct()
    print(rounding)
    return render(request, 'Homepage/gradescale.html', {"rounding": rounding,"gradeScalesSetting":gradeScalesSettings,"configurations":configurations})

当我尝试这个时:

@admin.register(gradeScalesSetting)
class gradeScalesSettingAdmin(admin.ModelAdmin):
    def new_NumberOfGrades(self, obj):
        if obj.NumberOfGrades == 'Grade Scale Settings':
            return '<a href="view.html" </a>'  # this url will redirect to your 

在我的 ModelAdmin 子类中:

list_display = ('configuration_select', 'new_NumberOfGrades', 'Rounding','Precision', 'Status',)

enter image description here

有什么方法可以将它连接到我的views.py吗?

预期结果

这是我想在我的 view.html 中显示的内容:

enter image description here

这就是为什么我想将它连接到我的views.py。

最佳答案

覆盖ModelAdmin.changelist_view设置extra_context

@admin.register(gradeScalesSetting)
class gradeScalesSettingAdmin(admin.ModelAdmin):
    list_display = ('configuration_select', 'NumberOfGrades', 'Rounding','Precision', 'Status',)
    change_list_template = 'admin/Homepage/view.html'

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}

        gradeScalesSettings = gradeScalesSetting.objects.all()
        configurations = configuration.objects.all()
        rounding = gradeScalesSetting.objects.all().values_list('Rounding', flat=True).distinct()

        extra_context.update({
            "rounding": rounding,
            "gradeScalesSetting": gradeScalesSettings,
            "configurations": configurations,
        })
        return super().changelist_view(request, extra_context=extra_context)

关于python - Django 管理站点change_list View 定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759711/

相关文章:

python - django 管理员内联 : get object from formfield_for_foreignkey

python - Django rest 框架在部署后为 post 方法返回 405

python - 在Python中创建多个记录器到同一模块中的不同输出

python - cv2.imread : checking if image is being read

python - django 在以管理表单保存时减少了毫秒数

python - 在 Windows 上使用 pip 安装引导式 LDA 包

python - 为什么 Django admin list_select_related 在这种情况下不起作用?

python - Heroku 上的夹层

Django admin - 更改权限列表