【问题标题】:How to edit value of a record when Django admin page of the model gets opened打开模型的 Django 管理页面时如何编辑记录的值
【发布时间】:2020-02-03 04:53:05
【问题描述】:

在我的 Django 应用程序中,我有一个模型,它有一个 IntegerField 用于保存今天完成的查询数量,另一个字段保存该字段的最后修改日期。

class logs(models.Model):
   today_queries = models.IntegerField("today's queries", default=0, help_text="Total number of today's queries.")
   update_date = models.DateField(default=datetime.date.today)

我的问题是,每次我打开 logs 模型的 Django 管理页面时,都会检索并显示 today_queries 的值(显然是默认行为)但是如果明天和其他日子到来,这个数字将不正确(应该是 0)。

如何在 logs 模型的 Django 管理页面打开后立即编辑 today_queries 的值(以便我将 update_datenow 进行比较,如果是新的一天,请重置today_queries的值)

【问题讨论】:

    标签: django


    【解决方案1】:

    您可以在 ModelAdmin 的 change_view 方法中执行此操作,请在此处查看文档 -> https://docs.djangoproject.com/en/2.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.change_view

    这样的事情应该可以解决问题:

    def change_view(self, request, obj_id):
        instance = self.get_queryset(request).get(pk=obj_id)
        instance.today_queries += 1
        instance.save()
        return super(YOUR_MODELADMIN, self).change_view(request, obj_id)
    

    注意:应该对此代码进行一些调整:)

    【讨论】:

    • 非常感谢,我使用您的代码运行它并根据我的需要进行了一些修改。 Django方面唯一的抱怨是obj_id应该重命名为object_id
    • 很高兴为您提供帮助!是的,object_id 是 django 源中建议的名称,抱歉缩短了它!
    猜你喜欢
    • 2019-08-05
    • 2021-07-14
    • 2012-08-04
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多