Django JSONField-Fehler: Eine Feldklasse, deren Methode get_db_prep_save nicht aktualisiert wurde, um ein `connection'-Argument zu akzeptieren

  • Ich habe dieses alte JSONField-Modell-Snippet in mein Django gesteckt Anwendung. Es sieht so aus, als würde es funktionieren, wirft diese Warnung jedoch immer dann, wenn der Server eine erneute Validierung durchführt:

     $ sudo python manage.py runserver
    Validating models...
    
    /opt/bitnami/apps/django/lib/python2.6/site-packages/django/db/models/fields/subclassing.py:80:
    DeprecationWarning: A Field class whose get_db_prep_save method hasn't been updated to take a `connection` argument.
      new_class = super(SubfieldBase, cls).__new__(cls, name, bases, attrs)
    0 errors found
     

    Was bedeutet das? Wie kann ich das Problem beheben?

    22 November 2011
    Abe
3 answers
  • Diese Warnung weist Sie darauf hin, dass das in diesem Snippet implementierte benutzerdefinierte JSON-Feld Das -Anschluss -Argument, das in django 1.2 eingeführt wurde , weil Unterstützung für mehrere Datenbanken.

    Mit betrachtet die Methode selbst: Wenn Sie ein benutzerdefiniertes Modellfeld schreiben, können Sie das get_db_prep_save verwenden, um das Python-Objekt, mit dem Sie arbeiten (in diesem Fall ein JSON-Objekt) in ein Formular zu konvertieren, das von der Datenbank unterstützt wird kann einen String verwalten (in diesem Fall eine Zeichenfolge), bevor er in der DB gespeichert wird. Hier sind die Versionshinweise, in denen es erwähnt wird

    Das Argument Verbindung bezieht sich auf die aktuelle Datenbank (zum Zeitpunkt der Ausführung). Um den Standardwert zu erhalten, können Sie django.db.connection) und ist vorhanden, um sicherzustellen, dass beim Aufruf dieser Methode die richtige Datenbank bereitgestellt wird, sodass benutzerdefinierte Backend-Logik oder -Konvertierungen ausgeführt werden können, bevor der Wert in der Datenbank gespeichert wird. Sie können hier mehr über Verbindungen und Cursor lesen

    22 November 2011
    Timmy O'Mahony
  • Sie können auch http://pypi.python.org/pypi/django verwenden -jsonfield , es handelt sich im Wesentlichen um eine Zusammenfassung des von Ihnen erwähnten Code-Snippets.

    (Ich hatte eine ältere Version, die mir den gleichen Verbindungsfehler gab, den Sie angesprochen haben; Die neueren Versionen haben dies behoben.)

    28 June 2012
    Reinout van Reesk9b
  • Sie können dies auch versuchen: https://github.com/vialink/ vlk-django-jsonfield

    Wir verwenden es in einigen Projekten und es funktioniert einwandfrei.

    17 April 2013
    msbrogli