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