我想在第一次创建时在Django模型中执行一些代码。之后,每当它被保存时,我想执行一些其他代码。通过重写save()方法可以轻松完成第二项任务。 我该怎么做第一项任务?在Django中创建模型时执行代码
6
A
回答
9
可以使用django signals:使用receiver
装饰“post_save
# models.py
from django.db.models import signals
class MyModel(models.Model):
pass
def my_model_post_save(sender, instance, created, *args, **kwargs):
"""Argument explanation:
sender - The model class. (MyModel)
instance - The actual instance being saved.
created - Boolean; True if a new record was created.
*args, **kwargs - Capture the unneeded `raw` and `using`(1.3) arguments.
"""
if created:
# your code goes here
# django 1.3+
from django.dispatch import dispatcher
dispatcher.connect(my_model_post_save, signal=signals.post_save, sender=MyModel)
# django <1.3
from django.db.models.signals import post_save
post_save.connect(my_model_post_save, sender=MyModel)
21
from django.db import models
from django.dispatch import receiver
class MyModel(models.Model):
pass
@receiver(models.signals.post_save, sender=MyModel)
def execute_after_save(sender, instance, created, *args, **kwargs):
if created:
# code
+2
这是django 1.10现在的作品,而不是接受的答案,大概是早期版本的正确答案。 – LisaD
相关问题
- 1. 是否可以在C#中运行时创建/执行代码?
- 2. 在创建时更新Django模型
- 3. 在创建组后创建模型django
- 4. 在django中创建相同的模型
- 5. 在Django模型中创建外键
- 6. Django simle模型执行
- 7. Django创建模型时出错
- 8. 如何在Django模板代码中执行“或”操作?
- 9. 优化Django代码模型
- 10. 创建函数来执行代码
- 11. qt在创建表单时执行代码
- 12. 如何在Django中为用户模型创建密码字段?
- 13. Django:创建用户模型
- 14. 在运行时创建ActiveRecord模型rails3
- 15. 在Django中创建用户时执行某些操作
- 16. django admin创建时创建密钥模型
- 17. 在Django模型如何创建
- 18. Excel VBA在新创建的工作簿中执行代码
- 19. 创建一个Django模型实例并创建另一个Django模型实例
- 20. 停止执行代码时在Page_Load中
- 21. 在C#中执行实时代码.net
- 22. nodejs模块代码执行
- 23. 使用外键创建模型实例时的500代码
- 24. django在创建用户时在userprofile表中创建一行
- 25. 如何在运行时动态创建和执行机器代码?
- 26. 在运行时执行.NET代码
- 27. 如何在django 1.7模型中创建键值数据类型
- 28. 在创建表格时执行Django灯具
- 29. 在Django模板中创建模型实例
- 30. 在Rails模型中创建模型
我试过,但得到了一个错误。原来我使用的是Django版本(1,1,1,'final',0),这只适用于Django 1.3及更高版本。我会尝试升级,但您是否知道其他方法?谢谢! –
@Rohit:1.1.1中的错误是什么?这些信号存在于1.1.1中,设置可能有点不同,或者我有一个错字。 – sdolan
@RohitAgarwal:我瞥了一眼以前的文档,并更新了我应该为1.1.1工作的例子的底部。 – sdolan