Django raw引发关系不存在

时间:2015-07-28 17:52:03

标签: python django postgresql

我得到的关系不存在,我无法找到解决方案。

error:relation "sales_Oeslshstsql" does not exist
LINE 1: SELECT * FROM "sales_Oeslshstsql

(应用名称为销售)

模型:

class Oeslshstsql(models.Model):
    hst_prd = models.SmallIntegerField()
    hst_year = models.SmallIntegerField()
    cus_no = models.CharField(max_length=12)
    item_no = models.CharField(max_length=15)
    .....

    a4glidentity = models.IntegerField(db_column='A4GLIdentity', primary_key = True)  

class Meta:
    managed = False
    db_table = 'OESLSHST_SQL'

    def __str__(self):
        return (self.hst_year)

查看:

def sales(request):
    #sales_list = Oeslshstsql.objects.all().order_by('hst_year','hst_prd').reverse()
    s = Oeslshstsql.objects.raw('SELECT * FROM "sales_Oeslshstsql"')
    sales_list = s

    return render(request,'saleslist.html',{'sales_list':sales_list})

评估s时会引发错误。我尝试在选择中切换案例并且与迁移混乱没有运气。

我正在使用postgres后端将现有应用程序迁移到Django,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

尝试:

s = Oeslshstsql.objects.raw('SELECT a4glidentity as id, ... ,  FROM "OESLSHST_SQL"')  

http://docs.djangoproject.com/en/1.8/ref/models/options/#db-table似乎查询中的表名错误

编辑:您应该将主键添加为ID,请参阅https://docs.djangoproject.com/en/1.8/topics/db/sql/#mapping-query-fields-to-model-fields

答案 1 :(得分:0)

您好我将现有应用迁移到1.11时遇到了同样的问题。我发现的唯一解决方案是....

  1. 清除应用迁移目录中的所有文件,只保留 init .py文件

  2. 确保admin.py文件为空

  3. 运行manage.py makemigrations

  4. 运行manage.py sqlmigrate <app_label> 0001

  5. 复制sql输出

  6. 使用pgAdminIII选择“执行任意SQL查询”

  7. 在pgAdminIII

  8. 中粘贴并执行SQL语句

    这是我能找到的唯一解决方案,有点破解,但是有效。希望它有所帮助。我想这也可以通过psql终端工作,但我使用了pgAdmin