2016-09-23 3 views
0

Ich habe ein Django-Modell, das in einem anderen Modell als ForeignKey Typ referenziert wird. Damit diese gut in das Admin-Interface angezeigt habe ich eine __unicode__ Methode, wie folgt aus:Änderung an Django-Modell nicht von Makemigrationen erkannt

class Foo(models.Model): 
    label = models.CharField(max_length=2) 
    description = models.TextField() 

    def __unicode__(self): 
     return self.label 

Diese Änderung in der Admin-Interface nach dem Speichern meiner models.py Datei sofort sichtbar ist. Aber wenn ich makemigrations ausführen, gibt es No changes detected in app 'foo' zurück. Running migrate tut nichts, da es keine Änderungen sieht, und python manage.py check gibt zurück System check identified no issues (0 silenced).

Sollte ich das erwarten? Ich habe viele Änderungen an meinen Modellen vorgenommen und daher viele Migrationen durchgeführt (einschließlich dieser Woche), aber ich habe dies noch nie zuvor gesehen.

Derzeit läuft Django 1.8.3 mit Sqlite Entwicklung db, unter Python 2.7 unter Windows.

Antwort

1

Das sollte in Ordnung sein. Migrationen werden nur erstellt, wenn die Struktur des Modells geändert wird, auch wenn Sie dem Modell neue vars hinzufügen.

Da neue Methoden betroffen sind, da sie die Struktur des Modells nicht ändern, ist keine Migration erforderlich. Sie können also problemlos Methoden zu Ihrem Modell hinzufügen, ohne eine einzige Migration durchzuführen.

Wenn der Name nicht im Admin-Backend von Django angezeigt wird, versuchen Sie stattdessen die Methode __str__. das funktionierte für mich (aber Python 3.5 unter Linux).

def __str__ (self): 
    return self.name 
+0

Das ist großartig, danke. Ich habe das genauso vermutet. Ich sollte allerdings mein Python aktualisieren und stattdessen '__str__' verwenden. – ChrisM

Verwandte Themen