尝试创建自定义模型时出现 Django 错误 class
Django error while trying to create custom model class
我开始在此处指定的包中组织我的模型:https://docs.djangoproject.com/en/1.11/topics/db/models/#organizing-models-in-a-package
我正在使用 旧版 Oracle 数据库
我还创建了一个包含模型 class 的一些 extensions/inheritances 的模块,以方便创建包含重复字段的多个 classes
这是我的结构:
models/
__init__.py
geo_classes.py
tables.py
错误如下:
django.db.utils.DatabaseError: ORA-00904:
"TABLE_NAME"."TABLECLASS_PTR_ID": invalid identifier
我在网上找不到任何关于这个 PTR_ID 它试图抓住的东西,也许我错过了一些关于扩展基础模型的东西?
文件(仅重要部分):
geo_classes.py :
from django.db import models
class EsriTable(models.Model):
objectid = models.BigIntegerField(unique=True, editable=False, verbose_name='OBJECTID')
class TableClass(EsriTable):
cod = models.BigIntegerField(primary_key=True)
def __str__(self):
return str(self.cod)
tables.py :
from .geo_classes import TableClass
from django.db import models
class MyClass(TableClass):
#Fields
name = models.CharField(max_length=50)
#Keys
#Relations
class Meta:
managed = False
db_table = 'TABLE_NAME'
您正在使用多重 table 继承。您的每个模型都是一个单独的 table,包括基础 class。 Django 设置一个指针 id 指向父 table.
然而,这显然不是你想要的。您的两个基础 class 实际上都不是单独的 table。所以你需要使用抽象继承:给这两个模型自己的内部 Meta class,并设置 abstract = True
.
我开始在此处指定的包中组织我的模型:https://docs.djangoproject.com/en/1.11/topics/db/models/#organizing-models-in-a-package
我正在使用 旧版 Oracle 数据库
我还创建了一个包含模型 class 的一些 extensions/inheritances 的模块,以方便创建包含重复字段的多个 classes
这是我的结构:
models/
__init__.py
geo_classes.py
tables.py
错误如下:
django.db.utils.DatabaseError: ORA-00904: "TABLE_NAME"."TABLECLASS_PTR_ID": invalid identifier
我在网上找不到任何关于这个 PTR_ID 它试图抓住的东西,也许我错过了一些关于扩展基础模型的东西?
文件(仅重要部分):
geo_classes.py :
from django.db import models
class EsriTable(models.Model):
objectid = models.BigIntegerField(unique=True, editable=False, verbose_name='OBJECTID')
class TableClass(EsriTable):
cod = models.BigIntegerField(primary_key=True)
def __str__(self):
return str(self.cod)
tables.py :
from .geo_classes import TableClass
from django.db import models
class MyClass(TableClass):
#Fields
name = models.CharField(max_length=50)
#Keys
#Relations
class Meta:
managed = False
db_table = 'TABLE_NAME'
您正在使用多重 table 继承。您的每个模型都是一个单独的 table,包括基础 class。 Django 设置一个指针 id 指向父 table.
然而,这显然不是你想要的。您的两个基础 class 实际上都不是单独的 table。所以你需要使用抽象继承:给这两个模型自己的内部 Meta class,并设置 abstract = True
.