Benutzerdefinierte Django-Modellfelder: to_python () nicht aufgerufen

8

Ich bin ziemlich neu bei Python und Django und total neu bei Stack Overflow, also hoffe ich, dass ich hier keine Regeln brechen werde und ich respektiere das Frageformat.

Ich stehe vor einem Problem, ein benutzerdefiniertes Modellfeld mit Django (Python 3.3.0, Django 1.5a1) zu implementieren, und ich habe keine ähnlichen Themen gefunden, ich bin eigentlich ziemlich fest auf diesem ...

Da ist also ein Spieler, er hat eine Hand (of Card). Die Hand erbt von CardContainer, was im Grunde eine Liste von Karten mit einigen (hier versteckten) Hilfsfunktionen ist. Hier ist der entsprechende Code:

%Vor%

Aber wenn ich einen Spieler bekomme, sagen wir so: Player.objects.get(id=3).hand , anstatt eine Hand -Instanz (oder gar eine CardContainer -Instanz überhaupt!) zu bekommen, erhalte ich nur eine durch Komma getrennte Zeichenkette von ganzen Zahlen wie "1,2,3", was in der Datenbank gut ist (es ist das Format, das ich in der Datenbank sehen möchte) ...

Es scheint mir, dass to_python nicht aufgerufen wird, also sind die zurückgegebenen Daten der rohe Wert, daher die Zeichenkette. Als ich nach dieser Art von Problemen suchte, verpassten die Leute das __metaclass__ = models.SubfieldBase ... Ich hoffte, ich hätte das auch vermisst, aber, hey, es wäre zu einfach gewesen! Habe ich etwas Triviales vermisst oder liege ich falsch? : D

Vielen Dank !!

    
astorije 29.12.2012, 04:40
quelle

2 Antworten

10

In Python 3 wird die Modul-globale Variable __metaclass__ nicht mehr unterstützt. Sie müssen verwenden:

%Vor%     
sneawo 29.12.2012, 11:29
quelle
0

für Django 1.10 und spätestens

%Vor%     
Sarath Ak 20.10.2016 18:35
quelle

Tags und Links