响应 Django 中的模型更改?

Posted

技术标签:

【中文标题】响应 Django 中的模型更改?【英文标题】:Responding to model changes in Django? 【发布时间】:2016-06-18 13:45:10 【问题描述】:

有没有办法在模型更改发生时执行代码?当添加、删除或编辑 Django 模型对象时,我如何观察?

【问题讨论】:

【参考方案1】:

这就是django-signals 的用途。您可以使用post_savepost_delete 来观察模型对象。

Django 提供了一组内置信号,可以让用户代码通过 Django 自身获得某些操作的通知。

from django.db.models.signals import post_save
from django.dispatch import receiver
from myapp.models import MyModel

@receiver(post_save, sender=MyModel)
def my_handler(sender, **kwargs):
    # do whatever you want if a MyModel object is saved

【讨论】:

【参考方案2】:

Django signals 非常适合这个。与 ios 上的 NSNotificationCenter 类似,Django 信号允许通过连接到信号来通知其他应用程序信号事件。

【讨论】:

以上是关于响应 Django 中的模型更改?的主要内容,如果未能解决你的问题,请参考以下文章

在不删除表的情况下更改模型中的 Django 数据类型

Django 模型 - 在选择字段中更改选项并迁移

更改模型中的显示名称以在响应中显示

如何更改 django 模型中的默认时间格式 [重复]

Django:如何在新模板中的另一个模型上使用 CreateView 的 form_valid() 返回的响应?

django rest 更改 json 响应设计