Django 错误:列名 'id' 无效



我很难理解为什么我的一个查询失败。

我正在使用pyodbc连接到Django应用程序上的SQL Server数据库。除了一个问题外,我所有的其他问题都很好。以下是相关信息:

型号

class ReportTemplate(models.Model):
name = models.TextField(db_column='Name', blank=True)
template = models.TextField(db_column='Template', blank=True)
class Meta:
db_table = 'ReportTemplateTbl'

功能

我在下面的例子中使用了"Abstract",因为它是一个已知值。

get_initial(self):
my_template = ReportTemplate.objects.get(name='Abstract')
return {'abstract': my_template.template}

错误

当应用程序运行此功能时,会返回以下错误:

('42S22',"[42S2][Microsoft][ODBC SQL Server Driver][SQL Server]列名'id'无效。(207)(SQLExecDirectW);[42000][Microsoft][ODBC SQL服务器Driver][SQL Server:语句无法准备。(8180)")

变量信息似乎表明pyodb正在尝试搜索

u'SELECT[ReportTemplateTbl]。[id],[ReportTemplateTbl]。[名称]、[报告模板Tbl]。[Template]FROM[ReportTemplateTbl]WHERE[ReportTemplate Tbl]。[名称]=?'

我真的很想了解我在这里做错了什么,并试图避免手动查询。提前感谢!

根据django文档,id列是自动创建的。可以通过在Model子类中指定另一个属性作为主键来覆盖此行为:

class ReportTemplate(models.Model):
name = models.TextField(db_column='Name', blank=True, primary_key=True)
template = models.TextField(db_column='Template', blank=True)
class Meta:
db_table = 'ReportTemplateTbl'

最新更新