Django Bug在db_列中有长名称?

2024-09-28 23:43:34 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在Models.py中的一个字段的db_列中使用长名称时,django无法正常工作。它将截断名称,并在末尾添加随机字母/数字

像这样:db\u column='my\u looooooooooong\u column\u name'

当我尝试queryset时,django返回: “表名”。“my_looo6e4”:标识符无效


我的详细场景

我在Oracle中有一个遗留数据库。
数据库中的表名:PALAVRA_CHAVE_ENTREGA_VALOR
包含3个字段:PCEV\u CD\u PALAVRA\u CHAVE\u ENTREGA\u VALOR(主键),PACH\u CD\u PALAVRA\u CHAVE,ENVA\u CD\u ENTREGA\u VALOR

在mymodels.py中:

class PalavraChaveEntregaValor(models.Model):
    pcev_cd_palavra_chave_entrega_valor = models.BigIntegerField(primary_key=True, db_column='pcev_cd_palavra_chave_entrega_valor')
    pach_cd_palavra_chave = models.BigIntegerField()
    enva_cd_entrega_valor = models.BigIntegerField()

    class Meta:
        managed = False
        db_table = 'palavra_chave_entrega_valor'

在shell(python manage.py shell)中运行此命令时:
PalavraChaveEntregaValor.objects.all()
我得到输出:数据库错误:ORA-00904:“PALAVRA_CHAVE_ENTREGA_VALOR”。“PCEV_CD_PALAVRA_CHAVE_ENTRA6E4”:无效标识符

我做了一个测试,把PCEV_CD_PALAVRA_CHAVE_ENTREGA_VALOR改成了PCEV_CD,一切都很好

django的db_列中的字符是否有限制?有解决办法吗?如果没有,我将不得不在Oracle数据库中创建大量视图,并且只有在django工作时才使用较短的列名。。更改当前表列名不是一个选项


Tags: django数据库dbmodelscdvalorpalavraentrega