我有我的models.py
:如何检查模型中的特定字段更改?
class Hotel(models.Model):
name = models.CharField(max_length=20)
currency = models.ForeignKey(Currency)
class Currency(models.Mode):
code = models.CharField(max_length=3)
name = models.CharField(max_length=10)
每当在酒店的currency
领域正在发生变化,我需要能够做一些事情。所以我有这样一个功能:
@receiver(pre_save,sender=Hotel)
def update_something(sender,**kwargs)
obj = kwargs['instance']
old_object = Hotel.objects.get(pk=obj.pk)
'''
Now I can do anything here comparing the oldo object with the instance
'''
的事情是我不想让这个查询,从此信号的目的变得愚蠢和我成为傻子。
所以我应该可以做这样的事情:
updated = kwargs['update_fields']
new_currency = updated['currency']
是他们的办法,我可以找出是只改变一个特定领域说currency
,而不是做这样的查询。我想在保存之前获取与currency
外键相关的更改并更新内容。
对不起,我的英语不好,不能使用太专业术语。
谢谢:)
我想你会发现你需要的一切:http://stackoverflow.com/questions/1197674/actions-triggered-by-field-change-in-django。你可以使用__init__和__save__方法重写它们,或者重写__setter__! – Ricola3D
[Django:保存时,如何检查字段是否已更改?]的可能重复(http://stackoverflow.com/questions/1355150/django-when-saving-how-can-you-check-if-一个场-具有改变的) – Martey