2017-06-08 2 views
1

in django admin verwende ich ein Modell, und ist mit dem Server-Betreiber registriert, und ich habe verwendet benutzerdefinierte Feld in der ListeWie Such benutzerdefinierte Feld

class ReportsAdmin(admin.ModelAdmin): 
    def investment(self, inst): 
     return models.OrderDetail.objects.filter(user=inst.user).distinct().count() 

    list_display = ['investment'] 
    search_fields = ['investment'] 

i das investment Feld mit gesucht werden soll angezeigt werden in django admin aber immer Cannot resolve keyword 'investment' into field. Auswahlmöglichkeiten sind die Modellfelder.

Gibt es eine Möglichkeit, nach der ich mit dem Feld investment suchen kann?

Antwort

1

Nun, ist dies nicht erlaubt:

ModelAdmin.search_fields

Sets search_fields Seite ein Suchfeld auf der Admin-Änderungsliste zu aktivieren. Dies sollte auf eine Liste von Feldnamen festgelegt werden, die durchsucht werden, wenn jemand eine Suchabfrage in diesem Textfeld sendet.

Diese Felder sollten eine Art von Textfeld sein, wie CharField oder TextField-. Sie können auch einen verwandten Nachschlag auf einem ForeignKey oder ManyToManyField mit der Lookup API „folgen“ Notation ausführen:

Sie haben kein solches Feld überhaupt (geschweige denn, dass das Feld ein TextField- sein muss oder CharField). Was Sie tatsächlich haben, ist eine Methode in Ihrer Admin-Klasse, die nicht auf Datenbankebene durchsucht werden kann. Dh was in den search_fields steht, wird in like '%search_term%' Typabfragen umgewandelt, die an der db ausgeführt werden.