[英]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.