Skip to content

django 管理画面でモデルの保存時に追加で処理したい

Posted on:2019年2月8日 at 00:00

django 管理画面でモデルの保存時に追加で処理するために save_model 関数をオーバーライドする

ModelAdminsave_model 関数オーバーライドすればできます。

データの更新時に日付だけ更新したい場合は、 DateTimeFieldauto_now=True でモデル更新時に日付も更新することも可能です。 ただその場合は、objects.filter().update() では更新されない点を注意して下さい。

model

polls/models.py

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    update_date = models.DateTimeField('date updated')
    system_update_date = models.DateTimeField('date system_updated', auto_now=True)

admin

polls/admin.py

class QuestionAdmin(admin.ModelAdmin):
    """
    Questionモデルの管理画面
    """

    def save_model(self, request, obj, form, change):
        """
        save_model関数のオーバライド
        """

        obj.update_date = datetime.now() # update_date を現在の日時で更新

        super(QuestionAdmin, self).save_model(request, obj, form, change)

admin.site.register(Question,QuestionAdmin)