【问题标题】:Further customization of Django admin (add new object)进一步自定义 Django admin(添加新对象)
【发布时间】:2013-01-31 15:08:40
【问题描述】:

我已经对 Django 管理界面进行了一些配置(内联、过滤器、order_by...),但我想在添加新项目时更改保存按钮的行为。看看我的界面(是法语,但应该很容易理解 prix:price - enregistrer:save)

我有三个价格字段,一个用于当前项目价格,另一个用于以前的价格。 我想做的是当当前价格被更改并保存时,价格数据自动转到 price2 和 price2 到 price3。 像这样,我总是看到旧价格是多少。

也许还有一件事:当点击 save(enregistrer) 时,我是否可以返回特定页面,而不是返回所有对象的列表?

感谢您的帮助!

【问题讨论】:

    标签: python html django django-admin


    【解决方案1】:

    您可以像这样覆盖管理员保存方法:

    class MyModelAdmin(admin.ModelAdmin):
        def save_model(self, request, obj, form, change):
            # custom stuff here
            obj.save()
    

    这个问题可能会帮助您在保存后重定向: Redirect on admin Save

    【讨论】:

    • 感谢它正在工作......几乎!如何获得“prix”字段的旧值? obj.price 给了我新的价值。
    • 明白了!我使用 old_obj = Piece.objects.get(pk=obj.id) 和 old_obj.price
    【解决方案2】:

    有几种方法可以满足您的要求。最明显的两个是:

    1. 覆盖模型的save 方法(请参阅Django docs)。
    2. 覆盖ModelAdminsave_model 方法。

    我会选择 1。因为这看起来像是您不想明确与管理员绑定的逻辑,但这取决于您正在构建的应用程序。

    关于重定向,你可能想看看Redirect on admin Save

    【讨论】:

    • 感谢管理员保存重定向的链接,这正是我想要的
    猜你喜欢
    • 2011-04-25
    • 2017-02-12
    • 2016-08-22
    • 2018-03-13
    • 1970-01-01
    • 2013-12-30
    • 2015-04-15
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多