1、模型示例
from django.db import models
from soft_delete_it.models import SoftDeleteModel
class BaseModel(models.Model):
sort = models.IntegerField(default=1, verbose_name='排序')
content = models.TextField(default='', blank=True, verbose_name='描述')
sort_time = models.DateTimeField(auto_now_add=True, verbose_name='排序時間')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='創建時間')
update_time = models.DateTimeField(auto_now=True, verbose_name='更新時間')
class Meta:
abstract = True
class ConfDict(SoftDeleteModel, BaseModel):
dict_type_choices = (
(0, '類型一'),
(1, '類型二'),
(2, '類型三'),
)
dict_title = models.CharField(max_length=255, verbose_name='字典標題')
dict_key = models.IntegerField(default=0, verbose_name='字典鍵值')
dict_type = models.IntegerField(default=0, choices=dict_type_choices, verbose_name='字典類型')
class Meta:
db_table = 'A_ConfDict_Table'
verbose_name = '系統字典表'
verbose_name_plural = verbose_name
2、在同級目錄下新增一個signals.py文件
from datetime import datetime
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver
from .models import ConfDict
from django.db import transaction
@transaction.atomic
@receiver(post_save, sender=ConfDict)
def create_update_object(sender, instance=None, created=False, **kwargs):
'''
:param sender:
:param instance:
:param created:
:param kwargs:
:return:
'''
print('對象保存時 signals流轉詳情:')
print(sender)
if created:
print('新增時:', instance)
else:
print('修改時:', instance)
@transaction.atomic
@receiver(post_delete, sender=ConfDict)
def delete_object(sender, instance=None, **kwargs):
'''
:param sender:
:param instance:
:param kwargs:
:return:
'''
print('對象刪除時 查看signals流轉詳情:')
print(sender)
print('被刪除的對象:', instance)
3、修改同級目錄下的apps.py以應用signals
from django.apps import AppConfig
class BaseConfig(AppConfig):
name = 'base'
# 激活signals
def ready(self):
import base.signals
重新運行服務即可