C2H*_*5OH 19 python django django-models
我有以下型号:
from django.db import models
class PopulationData(models.Model):
    slot = models.IntegerField(db_index=True)
    sample = models.IntegerField()
    value = models.FloatField()
    class Meta:
        unique_together = (('slot', 'sample'),)
我想在列对上创建一个具有UNIQUE约束的复合索引,如下所示:
CREATE INDEX my_compound_index ON myapp_populationdata (slot, sample);
现在我有一个单独的代码连接到post_syncdb发出前一个SQL语句的信号.有没有办法从模型规范中指出它?(注意:我正在使用1.3分支).
小智 5
从Django-1.11开始,使用Meta.indexes选项https://docs.djangoproject.com/en/1.11/ref/models/indexes/:
from django.db import models
class PopulationData(models.Model):
    slot = models.IntegerField(db_index=True)
    sample = models.IntegerField()
    value = models.FloatField()
    class Meta:
        unique_together = (('slot', 'sample'),)
        indexes = [
            models.Index(fields=['slot', 'sample']),
        ]
由于唯一约束也会创建索引,因此创建两者会适得其反。
例如,来自postgres docs:
无需在唯一列上手动创建索引;这样做只会复制自动创建的索引。
感谢Mark Byers提供的文档链接
如果由于某种原因您仍然想创建多列索引,您可以通过以下方式执行此操作index_together:
class PopulationData(models.Model):
    ...
    class Meta:
        index_together = [['slot', 'sample']]
| 归档时间: | 
 | 
| 查看次数: | 13091 次 | 
| 最近记录: |