我正在使用Django admin,希望能够利用现有的模型实例作为制作新对象的模板,这样使用Django admin的人在创建新对象时就不需要重新输入所有相同的属性。我想象一下,在更新单个对象的Django admin表单底部会是这样:
Django文档解释了如何添加批量操作,通过向模型上的操作添加内容,如下所示:
然而,对于一个对象上的单个“更改模型”表单,我不太清楚如何进行操作,因为我只想对一个模型应用操作。
我该怎么做?
我猜我可能需要对change_model form进行一些修改,但除此之外,我不太确定。
有没有快速的方法可以在不覆盖大量模板的情况下完成这个操作?
class ArticleAdmin(admin.ModelAdmin):
actions = ['make_published']
def make_published(self, request, queryset):
queryset.update(status='p')
make_published.short_description = "Mark selected stories as published"
然而,对于一个对象上的单个“更改模型”表单,我不太清楚如何进行操作,因为我只想对一个模型应用操作。
我该怎么做?
我猜我可能需要对change_model form进行一些修改,但除此之外,我不太确定。
有没有快速的方法可以在不覆盖大量模板的情况下完成这个操作?
render_change_form
中,您可以确定您是处于添加还是更改上下文中,并相应地设置 "show_save_and_copy"。您可以在render_change_form
的完整签名中访问add
和change
布尔值:https://github.com/django/django/blob/2.1/django/contrib/admin/options.py#L1124 - Antoine Pinsard