2011-11-15 4 views
3

장고 관리자 패널을 통해 모델을 저장할 때 검사를 수행하고 싶습니다. 나는 그것을 말한다 문서에서, 그러나, ModelAdmin.save_model() 사용에 대한 생각 :장고 관리자에게 모델 저장시 확인 수행

ModelAdmin.save_model()와 ModelAdmin.delete_model을()가 거부권을 목적으로하지 않습니다, 개체를 삭제/저장해야합니다, 오히려 그들은 당신을 할 수 있도록 추가 작업을 수행하십시오.

모델을 편집 할 때만 시간 제한을 적용하려면 검사를 수행해야하며 어떤 경우에는 저장을 수행하지 않아야합니다. 예를 들어 자정이 지나면 관리자가 모델 인스턴스를 수정하려고 할 때 변경 사항을 저장하지 말고 관리자에게 자정이 지난 것을 알립니다 ...)

가장 적합한 장소는 무엇입니까? ModelAdmin.save_model이 저장 작업을 거부 할 수 없다는 것을 고려하면 어떻게됩니까?

답변

3

clean 메서드를 통해 일반 유효성 검사를 사용하여 modelform을 만든 다음 ModelAdmin 클래스 내에 form = MyFormClass을 수행하여 해당 양식을 관리자에게 할당하십시오.

+0

나는 분명히 뭔가 빠졌지 만 모델 인스턴스가 편집되고 있는지 또는 ModelForm의 클린 메서드에 삽입되어 있는지를 알기위한 안전하고 신뢰할 수있는 방법이 있습니까? 편집 할 때만 유효성을 검사하기를 원합니다. – jeannicolas

+1

self.instance.pk의 값을 확인할 수 있습니다. 값이 있으면 편집합니다. –

0

실제 관리 사이트가 아니기 때문에 this section은 모델 저장 기능을 재정의하는 방법을 설명합니다.이 기능을 사용하면 모델 저장을 막을 수 있습니다. 이 방법으로 원하는 것을 할 수있는 방법 일 수 있습니다.

편집 :

내가 여기 추측 100 %를 해요,하지만 어쩌면 admin.py에서 이런 일을 수행하여 당신이 관리자 - 구체적으로 허용 할 수 있습니다.

from blah.model import * 

def newSaveFunction(self, *args, **kwargs): 
    doStuff 

MyModel.save = newSaveFunction 

admin.site.register(MyModel) 
+0

나는 그것에 대해 생각했지만 거기에서 관리자 영역에 오류 메시지를 표시하는 방법을 모르겠다. – jeannicolas

+0

그래, 그 부분에 대해 잘 모르겠다. – obmarg