繁体   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