首页 > 解决方案 > Django 中的 ModelAdmin 相关问题

问题描述

下面是我在 admin.py 文件中的代码。

class JobAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug': ('title', 'organization',)}
    save_as = True

admin.site.register(Job, JobAdmin)

问题 #1:

我正在尝试使用 2 个不同的字段预填充我的 slug。标题字段被正确填充,而组织字段是外键字段,它也被填充但具有整数值。我想让这个字段填充其原始值,即组织模型中的名称字段。为此,我确实尝试按如下方式更改组织字段:

class JobAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug': ('title', 'organization__name',)}

但这给了我一个错误。

ERRORS:
<class 'jobs.admin.JobAdmin'>: (admin.E030) The value of 'prepopulated_fields["slug"][0]' refers to 'organization__name', which is not an attribute of 'jobs.Job'.

System check identified 1 issue (0 silenced).

问题 #2:

save_as = True不启用“另存为新”按钮。我确实参考了Django 管理文档,但我无法理解还需要做什么才能启用它。

如果有人能帮助我解决这些问题,我将不胜感激。感谢您的时间和提前帮助!

标签: djangodjango-modelsdjango-formsdjango-templatesdjango-admin

解决方案


问题一:

根据文档,预填充字段是通过 Javascript 完成的。您使用的语法是 Django ORM 语法。我认为您不能在那里使用相关的字段属性。您只能使用给定模型上的属性。

设置后,给定字段将使用一些 JavaScript 从分配的字段中填充。

问题 2:

这就是你应该做的。您是否有可能在创建新工作时正在寻找按钮?


推荐阅读