Wie weisen Sie Elementen in einem Model-Objekt Django zu?

7

Ist es möglich, Werte innerhalb eines Modells zu überschreiben? Ich bekomme Das Objekt 'MyModel' unterstützt keine Objektzuweisung.

%Vor%     
Pompeyo 12.09.2013, 08:42
quelle

3 Antworten

17

Modelle sind Objekte, keine Wörterbücher. Setzen Sie Attribute direkt auf sie:

%Vor%

Wenn der Attributname dynamisch ist, verwenden Sie setattr :

%Vor%

Dadurch wird die speicherinterne Kopie des Modells geändert, es werden jedoch keine Datenbankänderungen vorgenommen - dafür müsste Ihr Attribut ein Feld sein und Sie müssten das save Methode für my_model . Sie müssen das nicht tun, wenn Sie nur das ändern wollen, was die Vorlage in ihrem Kontext erhält, aber nur der Vollständigkeit halber:

%Vor%

Wörterbücher sind änderbar, wenn Sie tatsächlich ein Wörterbuch haben:

%Vor%

Aber nicht alles ist ein Wörterbuch.

    
Peter DeGlopper 12.09.2013, 08:50
quelle
2

Ja, Sie können Werte ändern, aber so wird es nicht gemacht. Django-Modelle sind Python-Klassen mit Modellen zur Darstellung von Feldern. Zum Beispiel dient ein CharField zum Speichern einer Zeichenfolge in einer Datenbank. Lassen Sie mich demonstrieren ( Code von django docs ):

%Vor%

Wie Sie oben sehen können, ist die Python-Klasse ein benutzerdefiniertes Django-Modell. Es ist mit einer Datenbank verknüpft, und wenn Sie manage.py syncdb ausführen, interagiert es mit Ihrer Datenbank, um die benötigten Tabellen und Spalten zu erstellen.

Nun, in Ihrem Fall:

%Vor%     
Games Brainiac 12.09.2013 08:51
quelle
0

my_model ist ein Objekt. Also, versuche das:

%Vor%     
Pritha Mahata 12.09.2013 08:52
quelle

Tags und Links