開発環境
- Python 3.7.3
- Django 3.0.5
※Class-Basedで開発していきます。
models.py
models.py
from django.db import models
class Word(models.Model):
"""単語モデル"""
word = models.CharField(max_length=15, unique=True)
# 文字数フィールド
word_count = models.PositiveSmallIntegerField(blank=True, null=True)
def __str__(self):
return self.word
admin.py
admin.py
from django.contrib import admin
from .models import Word
class WordAdmin(admin.ModelAdmin):
# save_model関数をオーバーライド
def save_model(self, request, obj, form, change):
word = obj.word # wordフィールドの入力値
# word_count
word_count = len(word)
obj.word_count = word_count
obj.save() # オブジェクトを保存
# モデルとsave_model関数を指定
admin.site.register(Word, WordAdmin)
完成!
これで、管理サイトでオブジェクトを追加・更新する際に、指定した事前処理が実行されます。