![](/img/trans.png)
[英]Django returning FieldDoesNotExist error on server but passes fine in shell
[英]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.