장고 (> 1.2 버전) 관리 메시지의 메시지 구조를 사용한다. 해당 인터페이스를 사용하여 추가 메시지를 추가 할 수 있습니다. 다음 예는 다음과 같습니다
from django.contrib import messages
class SomeModelAdmin(admin.ModelAdmin):
# your normal ModelAdmin stuff goes here
def save_model(self, request, obj, form, change):
# add an additional message
messages.info(request, "Extra message here.")
super(SomeModelAdmin, self).save_model(request, obj, form, change)
는 ModelAdmin의 save_model method을 무시하는 것, 저장되는 객체에 대한 변화를 감지하고, 방법은 데이터베이스에 현재 버전에 전달되는 개체를 비교하기. 인라인의 경우이 작업을 수행하려면 save_formset method을 재정의 할 수 있습니다. 가능한 방법은 (테스트되지 않은 코드) 다음과 같습니다.
class SomeModelAdmin(admin.ModelAdmin):
# your normal ModelAdmin stuff goes here
def save_formset(self, request, form, formset, change):
if not change:
formset.save()
else:
instances = formset.save(commit=False)
for instance in instances:
try:
# if you've got multiple types of inlines
# make sure your fetching from the
# appropriate model type here
old_object = SomeOtherModel.get(id=instance.id)
except SomeOtherModel.DoesNotExist:
continue
if instance.field_x != old_object.field_x:
messages.info(request, "Something Changed")
instance.save()
formset.save_m2m()
message.warning (..., '...')은 여전히 정상적인 메시지 인 것처럼 계속 표시됩니다. 예외 오류가 발생하는 것처럼 RED로 만드는 방법이 있습니까? – chiurox
try message.error ('', '') – zlosim