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'),)
Run Code Online (Sandbox Code Playgroud)
我想在列对上创建一个具有UNIQUE
约束的复合索引,如下所示:
CREATE INDEX my_compound_index ON myapp_populationdata (slot, sample);
Run Code Online (Sandbox Code Playgroud)
现在我有一个单独的代码连接到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']),
]
Run Code Online (Sandbox Code Playgroud)
由于唯一约束也会创建索引,因此创建两者会适得其反。
例如,来自postgres docs
:
无需在唯一列上手动创建索引;这样做只会复制自动创建的索引。
感谢Mark Byers提供的文档链接
如果由于某种原因您仍然想创建多列索引,您可以通过以下方式执行此操作index_together
:
class PopulationData(models.Model):
...
class Meta:
index_together = [['slot', 'sample']]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13091 次 |
最近记录: |