python - Django 多个 unique_together 是否在 PostgreSQL 中被错误映射?

标签 python django postgresql orm django-1.11

当我在我的 Django 模型中添加多个 unique_together 元组时,PostgreSQL 数据库映射出现错误(也根据 a previous SO answer on the subject )。示例如下。

这是我的迁移:

migrations.CreateModel(
    name='FinancialConcept',
    fields=[
        ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
        ('taxonomy', models.CharField(max_length=128)),
        ('name', models.CharField(max_length=256)),
        ('xbrl_element', models.CharField(max_length=256)),
        ('parent', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='analysis.FinancialConcept')),
    ],
),
migrations.AlterUniqueTogether(
    name='financialconcept',
    unique_together=set([('taxonomy', 'name'), ('taxonomy', 'xbrl_element'), ('parent', 'xbrl_element')]),
),
....

我预计这会创建三个 UNIQUE 索引,每对一个。但是,数据库映射最终是这样的:

    Column    |          Type          |                               Modifiers                                
--------------+------------------------+------------------------------    ------------------------------------------
 id           | integer                | not null default nextval('analysis_financialconcept_id_seq'::regclass)
 taxonomy     | character varying(128) | not null
 name         | character varying(256) | not null
 xbrl_element | character varying(256) | not null
 parent_id    | integer                | 
Indexes:
    "analysis_financialconcept_pkey" PRIMARY KEY, btree (id)
    "analysis_financialconcept_taxonomy_xbrl_element_d8b45254_uniq" UNIQUE CONSTRAINT, btree (taxonomy, xbrl_element)
    "analysis_financialconcept_parent_id_51fc8021" btree (parent_id)

UNIQUE 索引之一是正确的,但其他两个缺失。

知道是什么原因造成的吗?

最佳答案

你试过元组的元组吗?

unique_together = (('taxonomy', 'name'), ('taxonomy', 'xbrl_element'), ('parent', 'xbrl_element'))

关于python - Django 多个 unique_together 是否在 PostgreSQL 中被错误映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45839083/

相关文章:

python - executor.map() 类型错误 : zip argument #2 must support iteration

python - 创建组后创建模型django

ruby-on-rails - Django 相当于 rail respond_to

django - 配置 django 压缩器不重命名后处理文件

sql - 在 Postgres 中,截断或删除行后,在 pg_dump 优化 pg_restore 之前执行重新索引吗?

python - Pandas DataFrame 列连接

python - 如何返回在 Python 中修改了 list[i] 的列表的副本?

python - 在 Keras 中声明转换后的序列的 input_shape?

c# - PgAdmin Import/Export 没有使用 Entity Framework 保留外键

postgresql - 我如何将 Postgres DateRange 类型与 TypeOrm 一起使用