尝试创建自定义模型类时出现Django错误

时间:2017-05-26 20:41:57

标签: python django oracle django-models django-1.11

我开始在这里指定的包中组织我的模型: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'

1 个答案:

答案 0 :(得分:1)

您正在使用多表继承。每个模型都是一个单独的表,包括基类。 Django设置指针id指向父表。

然而,这显然不是你想要的。您的基类都不是自己的表。所以你需要使用抽象继承:给这两个模型赋予它们自己的内部Meta类,并设置abstract = True