2017-07-02 8 views
1

müssen Middleware erstellen, die alle Anforderungen und Ausführungszeit in Django speichert. habe ich eine Spalte in dbTypeError: int() Argument muss eine Zeichenfolge, ein Byte-ähnliches Objekt oder eine Zahl sein, nicht 'WSGIRequest'

models.py

class RequestInformation(models.Model): 
    list_of_requests = models.CharField(max_length=200) 

Und sah auch durch django docs und middleware.py erstellt

from profileapp.models import RequestInformation 

class CustomRequestMiddleware(object): 
    def process_request(self, request): 
     http_information = RequestInformation(request) 
     http_information.save() 

Auch hinzugefügt benutzerdefinierte Middleware in den Einstellungen. Aber ich weiß nicht, was ich als nächstes tun soll.

TypeError: int() argument must be a string, a bytes-like object or a 
number, not 'WSGIRequest' 

Leider fo dumme Frage, nicht ho finden lösen this.thanks im Voraus

+0

Es sollte eine Init-Methode und auch eine Aufruf-Methode (bei jeder Anfrage automatisch ausgeführt) Bitte lesen Sie die Dokumentation erneut https://docs.djangoproject.com/en/1.11/topics/http/middleware/ –

Antwort

1

Das erste Positions Argument für eine Modellinstanz ist das Stück, das ein int ist. Normalerweise verwenden Sie Schlüsselwortargumente, um stattdessen die Felder anzugeben: RequestInformation(list_of_requests=request).

Dies wird jedoch nichts nützliches tun, da es nur eine String-Darstellung des Anfrageobjekts speichern wird. Wenn Sie etwas Nützliches aus diesem Objekt herausholen möchten, müssen Sie auf seine Attribute einzeln zugreifen und es dann auf separate Felder im Modell verteilen.

Verwandte Themen