2016-07-21 11 views
0

Nach meiner Django App zu meinem Produktions-Server schiebe ich diesen Fehler bekommen habe:FieldDoesNotExist Fehler auf Django Produktionsserver

FieldDoesNotExist at/

Class_B has no field named <function DO_NOTHING at 0x7f5993ed3440> 

Der Fehler scheint aus einer Abfrage zu meinem databse (die gleiche PostgreSQL-Datenbank zu kommen, die ich benutze für meine Entwicklung).

Hier ist eine vereinfachte Version meiner model.py:

class Class_B(models.Model): 
    field1 = models.IntegerField(primary_key=True) 
    field2 = models.TextField(blank=True, null=True) 
    field3 = models.CharField(max_length=25) 
    field4 = models.CharField(max_length=100, blank=True, null=True, db_index=True) 

    class Meta: 
     db_table = 'class_B' 
     select_on_save = True 

class Class_A(models.Model): 
    field1 = models.OneToOneField('An_other_class', db_index=True, 
            on_delete=models.CASCADE) 
    field2 = models.ForeignKey('Class_A', models.DO_NOTHING, 
           db_column='field1', db_index=True, 
           related_name='+', blank=True, null=True) 

    class Meta: 
     db_table = 'class_A' 

Die Abfrage, auf dem der Fehler aufgetreten:

print(Class_A.objects.all()) 

Es gibt keine Migration und einige Anfragen an das zu tun Datenbankarbeit.

Ich benutze einen httpd Server auf CentOS mit wod_wsgi. Meine Python-Version ist 3.3 und Django 1.8.0.

Jede bekannte Lösung für diesen Fehler?

+0

Ohne 'self' wollen? Warum verwenden Sie eine 'Klasse', verwenden Sie eine' Funktion'. – dsgdfg

+0

Bitte schreiben Sie die vollständige Stack-Trace und den Code, der es generiert. – solarissmoke

Antwort

2

hier:

field2 = models.ForeignKey('Class_A', models.DO_NOTHING, 
          db_column='field1', db_index=True, 
          related_name='+', blank=True, null=True) 

Sie models.DO_NOTHING als Positions Argument vorbei sind anstelle eines benannten Argument. Dies ist in Django> = 1.9 zulässig (und wird in Django> = 1.10 benötigt), aber bei früheren Django-Versionen ist das zweite Positionsargument ForeignKey die Option to_field, daher Ihre Fehlermeldung.

Um eine lange Geschichte kurz zu machen, Sie

models.ForeignKey('Class_A', on_delete=models.DO_NOTHING, ...) 
Verwandte Themen