2009-06-12 6 views
1

Ich änderte das Modell, synchronisiert die db, und jetzt, wenn ich tun:Django altes Modell lesen?

Prs = Products.objects.filter(PrName__icontains='bla') 

ich den Fehler:

ERROR: column search_products.pr_name does not exist 
LINE 1: SELECT "search_products"."id", "search_products"."pr_name", ... 

Aber pr_name war das alte Modell, das ist, wie das neue Modell aussieht wie:

class Products(models.Model): 
    PrName = models.CharField(max_length=255) 
    PrDescription = models.CharField(max_length=4000) 
    PrPrice = models.DecimalField(max_digits=5, decimal_places=2) 
    PrCompany = models.ForeignKey(Companies) 

    def __str__(self): 
    return self.PrName 

Warum erhalte ich diesen Fehler? Ich synchronisierte die Datenbank 100 Mal, überprüfte den gesamten Code, es gibt keinen Verweis auf Pr_name irgendwo?

Antwort

2

Haben Sie versucht, den Server neu zu starten? Wenn Sie etwas anderes als der Entwicklungs-Server verwenden Das musst du wahrscheinlich nach dem Mak manuell machen Änderungen wie folgt.

+0

Von Deus Harold, du hast recht! Ich habe total vergessen, dass ich den Entwicklungsserver nicht benutzt habe, ich muss Apache nach jeder Änderung neu starten! – R0b0tn1k

0

Leider ist das, was Sie versuchen zu tun not supported von django aus dem Kasten heraus :-(

aber Sie können durch Hinzufügen eines db_column auf die Felder oder durch Export der Daten, das Entfernen der Tabelle aus der es Äther tun Datenbank, die Exportdatei bearbeiten, die Datenbanktabelle neu erstellen und die Daten neu zu importieren.

schauen Sie auch auf den verschiedenen schema evolution Lösungen gibt

+0

Sein Problem ist nicht ein neues Feld, das Migration benötigt, sondern sein Fehler zeigt an, dass ein altes Feld (eines nicht mehr in den Modellen) abgefragt wird und nicht in der Datenbank (d. H. Syncdb funktionierte ordnungsgemäß). –

+0

Würde PrName nicht in der Spalte pr_name resultieren? Ich denke, wir müssen das alte Modell sehen. –