2017-05-23 8 views
0

장고 관리 목록 표시에서 열 값을 무시하는 방법을 알아 내려고하고 있습니다.장고 관리자 목록 표시의 기존 열을 재정의하는 방법은 무엇입니까?

내 모델의 response_bytes 필드는 이고 MyModelAdmin입니다. 나는 MB 또는 KB 등

class MyModelAdmin(admin.ModelAdmin): 
    list_display = [f.name for f in MyModel._meta.fields] # This contains response_bytes 

    def response_bytes(self,obj): 
     return filesize.size(obj.response_bytes) 

    def request_bytes(self,obj): 
     return filesize.size(obj.request_bytes) 

불행히도이 호출하지 않는 방법 아래에서이 값을 보여줄 관리합니다. 사용자 정의 이름을 사용하여 새 list_display 항목을 만든 다음이 방법의 이름을 바꾸면 작동합니다.

기존 필드를 재정의하거나 새 열을 정의해야합니까?

답변

0

왜 당신은 당신의 모델 관리자에 다음 열

class MyModeL(models.Model): 
    filesize = model.ACertainFieldIAmUsing(... 

    @property 
    def change_bytes(self): 
     if float(self.filesize)/1048576 > 1: 
      return "%s MB" % (float(self.filesize)/1048576) 
     elif float(self.filesize)/1024 > 1: 
      return "%s KB" % (float(self.filesize)/1024) 
     else: 
      return "%s B" % (self.filesize) 

를 오버라이드 (override)의 대신이 비슷한 방법으로하지 않습니다.

class MyModelAdmin(admin.ModelAdmin): 
    list_display = ('change_bytes', ...) 

코드 안된 그러나이 가까이에 뭔가

작동합니다