簡體   English   中英

Django生產服務器上的FieldDoesNotExist錯誤

[英]FieldDoesNotExist error on Django production server

將Django應用推送到生產服務器后,出現以下錯誤:

FieldDoesNotExist at /

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

該錯誤似乎來自對我的數據庫的查詢(我用於開發的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())

無需進行任何遷移,並且可以對數據庫進行一些查詢。

我在CentOS上使用帶有wod_wsgi的httpd服務器。 我的python版本是3.3和Django 1.8.0。

有任何已知的解決方案可以解決此錯誤嗎?

這里 :

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, ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM