Wie django custom base64-Feld migrieren. Feld existiert nicht

9

Ich habe ein Base64-Feld, das aus dem Django-Snippet kopiert wird.

Ссылка

%Vor%

Ich stehe vor Problemen bei der Migration dieses Feldes z.B.

%Vor%

Der Fehler, den ich während der Migration erhalte, ist

%Vor%

django.core.exceptions.FieldDoesNotExist: EmailStatus has no field named u'attachment'

Jetzt kann ich sehen, warum das passiert. Aber ich kann keinen Weg finden. Ich denke, ich müsste vielleicht etwas im Bereich der Dekonstruktion ändern. Ich habe mehrere Dinge ausprobiert, aber alle sind kaputt gegangen.

z.B. Entfernen der _base64. Es funktioniert nicht beim Speichern und Abrufen von Daten.

Ich habe versucht, den Namen in der Migrationsdatei zu ändern, der nicht funktioniert.

%Vor%

Ich denke, dass die automatische Erkennung von Migrationen wegen der Namensänderung in contribute_to_class verwirrt wird. Ich bin mir nicht sicher, was eine Arbeit sein kann.

    
Akamad007 01.02.2017, 04:33
quelle

2 Antworten

2
%Vor%

Das scheint zu funktionieren. Es gab eine Verwechslung zwischen self.field_name und name in contribute_to_class , was dazu führte, dass der falsche Wert verwendet wurde (daher konnte makemigrations das Feld nicht beim zweiten Mal / bei Verwendung von migrate aufnehmen).

Ich habe python3-spezifische Änderungen vorgenommen, nämlich die Aufrufe von super und die Verwendung von base64 functions. Die set_data -Methode könnte falsch sein (ich habe das nicht zu sehr untersucht, da Sie möglicherweise python2 verwenden und die Codierung unterschiedlich wäre), aber Migrationen funktionieren.

Zusätzlicher Bonus: Das private_only Argument fehlt in Ihrer contribute_to_class Methode.

Hier ist was ich bekomme:

%Vor%     
Raphaël Gomès 05.02.2017 01:22
quelle
1

Nützlicher Link für Sie.

Ссылка

  

Hilfreiche Tipps:

     

Die fehlgeschlagene Migration:    Ссылка

     

Die Modelle:    Ссылка

     

Es kann anderen helfen.

    
bob marti 10.02.2017 13:43
quelle

Tags und Links