我开始在这里指定的包中组织我的模型:https://docs.djangoproject.com/en/1.11/topics/db/models/#organizing-models-in-a-package
我正在使用传统 Oracle数据库
我还创建了一个包含Model类的一些扩展/继承的模块,以便于创建包含重复字段的多个类
这是我的结构:
models/
__init__.py
geo_classes.py
tables.py
错误如下:
django.db.utils.DatabaseError:ORA-00904: " TABLE_NAME"。" TABLECLASS_PTR_ID":无效标识符
我无法在网上找到关于它试图捕获的这个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'
答案 0 :(得分:1)
您正在使用多表继承。每个模型都是一个单独的表,包括基类。 Django设置指针id指向父表。
然而,这显然不是你想要的。您的基类都不是自己的表。所以你需要使用抽象继承:给这两个模型赋予它们自己的内部Meta类,并设置abstract = True
。