2017-05-23 4 views
0

Ich versuche herauszufinden, wie Spaltenwerte in Django Admin List Display überschreiben.Wie überschreiben Sie die vorhandene Spalte in der Django-Administratorlistenanzeige?

Mein Modell hat Feld response_bytes welches in list_display in MyModelAdmin ist. Ich möchte Admin diesen Wert in MB oder KB usw.

es
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) 

Leider rufen Sie nicht unter Methoden zu zeigen. Wenn ich neue list_display Elemente mit benutzerdefinierten Namen erstellte und diese Methoden dann umbenannte, würde es funktionieren.

Kann ich vorhandene Felder überschreiben oder muss ich neue Spalten definieren?

Antwort

0

Warum nicht Sie es tun, um diese ähnliche Art und Weise statt Überschreiben der Spalte

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) 

Dann in Ihrem Modell Admin.

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

-Code ist nicht getestet, aber etwas so nah sollte

arbeiten
Verwandte Themen