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 inline
- 4. Django Admin&Model Deletion
- 5. Django-admin startproject mysite
- 6. django admin inline formset
- 7. django-admin --version error
- 8. GenericForeignKey和Django admin
- 9. Django Admin'页面找不到/ admin/
- 10. django admin中的只读字段admin/inline
- 11. django admin super(type,obj)
- 12. django admin TinyMCE集成
- 13. ModelTranslation,Django Admin和Widgets
- 14. Django Admin Fk分组
- 15. Django Admin - get_form覆盖
- 16. django admin list_filter太长
- 17. Django admin list_display property usage
- 18. find django/contrib/admin/templates
- 19. Django admin with FCGI + lighttpd
- 20. Django admin StackedInline定制
- 21. Django Admin :: HTML输入
- 22. Django Admin + Filter Horizontal?
- 23. 从django-admin命令发送django信号?
- 24. Django和Django的MongoDB问题admin
- 25. 覆盖Django Admin的主页? - Django
- 26. 如何集成django-admin-bootstrapped与django 1.10
- 27. Django django-admin-tools DashboardModule - HTML内容
- 28. Django admin删除m2m内联?
- 29. django-admin错误与解码
- 30. LDAP在Django默认的admin
您不应该使用Django Signals或其他技术自动更新吗?每次有人进行API调用时,手动更新模型似乎不是一个好主意。 – ssice
模型A仅由Django Admin更新。例如,当模型A的名称在Django Admin上更新时,我需要对模型B进行更新。因此,我只需要知道更新何时进行了更改,@ssice – 62009030
无论如何,为什么不自动进行更新?此外,您应该将所有信息添加到您的问题。 – ssice