1
A
回答
0
@ssice是正确的,你可以利用Django Signals,喜欢的东西django-dirtyfields一起。
或者
如果这是一个一次性的事情,你可以通过重写模型__init__()
和save()
方式推出自己的脏现场检查该模型。像这样的东西(当然也可以是更复杂根据您的要求):
def __init__(self, *args, **kwargs):
super(YOUR_MODEL, self).__init__(*args, **kwargs)
# SAVE THE INITIAL VALUE
self.__original_value = self.value_you_want_to_track
def save(self, *args, **kwargs):
# Compare the initial value with the current value
if self.__original_value != self.value_you_want_to_track:
# DO SOMETHING, MAYBE TRIGGER SIGNAL
super(YOUR_MODEL, self).save(*args, **kwargs)
# Finally update the initial value after the save complete
self.__original_value = self.value_you_want_to_track
注意
如果你使用模型update()
,因为它不会触发这些是行不通的django的save()
或相关信号。但是你说你想跟踪管理网站所做的更改,所以我认为这不是问题。
0
如果您只需要观看Django Admin更改表单中的更改,可以勾选ModelAdmin的save_model()
方法。
class YourAdmin(ModelAdmin):
def save_model(self, request, obj, form, change):
super().save_model(request, obj, form, change)
# do what you have to do here
您可能还想将其放在事务中以确保在其他操作失败时不保存模型。
class YourAdmin(ModelAdmin):
@transaction.atomic
def save_model(self, request, obj, form, change):
super().save_model(request, obj, form, change)
# do what you have to do here
相关问题
- 1. Django - django-admin-tools
- 2. Sinatra Web Admin(如Django Admin)
- 3. django-admin --version error
- 4. Django Admin models.Manager
- 5. Django ValueError at/admin/
- 6. Django TemplateDoesNotExist admin/login.html
- 7. Django admin inline
- 8. Django-admin startproject mysite
- 9. GenericForeignKey和Django admin
- 10. Django admin list_display newline
- 11. django admin inline formset
- 12. Django admin GenericForeignKey内嵌
- 13. Django Admin Manager覆盖
- 14. django admin TinyMCE集成
- 15. ModelTranslation,Django Admin和Widgets
- 16. Django Admin - get_form覆盖
- 17. 安装django-admin-tools
- 18. Django Admin Fk分组
- 19. Django Admin :: HTML输入
- 20. Django Admin ManyToMany错误
- 21. Django admin css问题
- 22. django.jQuery与Django admin change_form.html
- 23. django admin onetoone字段
- 24. Django admin'是'关系
- 25. Django MongoDB DatabaseError at/admin
- 26. Django admin list_display property usage
- 27. django admin super(type,obj)
- 28. Django admin with FCGI + lighttpd
- 29. Django Admin + Filter Horizontal?
- 30. Django admin StackedInline定制
您不应该使用Django Signals或其他技术自动更新吗?每次有人进行API调用时,手动更新模型似乎不是一个好主意。 – ssice
模型A仅由Django Admin更新。例如,当模型A的名称在Django Admin上更新时,我需要对模型B进行更新。因此,我只需要知道更新何时进行了更改,@ssice – 62009030
无论如何,为什么不自动进行更新?此外,您应该将所有信息添加到您的问题。 – ssice