2016-07-21 2 views
0

После нажатия мое приложение Django на моем рабочем сервере я получил эту ошибку:FieldDoesNotExist ошибка на сервере Django

FieldDoesNotExist at/

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

ошибка, кажется, исходит из запроса на мой Databse (ту же базу данных PostgreSQL, которые я использую для моего развития).

Вот упрощенная версия моего 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' 

Запрос, на котором появилась ошибка:

print(Class_A.objects.all()) 

Существует не миграция делать и некоторые запросы к работа базы данных.

Я использую httpd-сервер в CentOS с wod_wsgi. Моя версия python - 3,3 и Django 1.8.0.

Любое известное решение этой ошибки?

+0

Без 'self'? Зачем использовать 'class', используйте' function'. – dsgdfg

+0

Пожалуйста, разместите полную трассировку стека и код, который ее генерирует. – solarissmoke

ответ

2

Здесь:

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

вы передаете models.DO_NOTHING в качестве позиционного аргумента вместо имени аргумента. Это законно в Django> = 1.9 (и потребуется в Django> = 1.10), но для предыдущих версий Django второй позиционный аргумент ForeignKey - это опция to_field, следовательно, ваше сообщение об ошибке.

Чтобы сделать длинную историю короткой, вы хотите

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