【问题标题】:How to modify value of a django model object automatically when model item "edit/change" page is opened?打开模型项“编辑/更改”页面时如何自动修改 django 模型对象的值?
【发布时间】:2019-08-05 09:47:01
【问题描述】:

当模型项“编辑/更改”页面打开/单击并且单击未保存时,如何自动修改 django 模型对象的值。? 基本上我需要这个来跟踪已读和未读的数据项。就像跟踪电子邮件已读/未读一样。 我知道在 django admin 中单击保存按钮时如何实现它并且我目前正在手动执行它,但是我想在单击更改/编辑链接时自动更改特定值,以便我可以跟踪新创建的订单. 如下图所示,我希望在单击“id 26”时自动更改布尔值“read”[第二张图片][第一张图片]

【问题讨论】:

    标签: django python-3.x django-models django-views django-admin


    【解决方案1】:

    实现这一点的一种方法可能是在您的OrderAdmin 类中覆盖render_change_form(),并在呈现表单时设置read 的布尔值。

    例如:

    class OrderAdmin(admin.ModelAdmin):
    
        ...
    
        def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
            if obj is not None:
                obj.read = True
                obj.save()
            return super().render_change_form(request, context, add=add, change=change, form_url=form_url, obj=obj)
    

    【讨论】:

    • 非常感谢。我很感激你。我知道一定有某种方法,但似乎 django docs 无法帮助我。我真的认为 Django Docs 需要更合适的文档。无论如何,我永远感激你。 @威尔基林
    猜你喜欢
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多