0

我开始按照此处指定的方式将模型组织在一个包中: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)

表.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'
4

1 回答 1

1

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

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

于 2017-05-26T21:20:48.627 回答