【发布时间】:2021-08-26 04:31:36
【问题描述】:
我在 Django 2.2 中有一个这样的模型
class Post(models.Model):
class Meta:
verbose_name = _('Post')
verbose_name_plural = _('Posts')
phone_number = models.CharField(max_length=11, verbose_name=_('Phone number'), db_index=True)
token = models.CharField(unique=True, max_length=20, verbose_name=_('Token'), db_index=True)
post_state = models.SmallIntegerField(choices=[
(PostState.NEW, _('New')),
(PostState.PUBLISHED, _('Published')),
(PostState.ARCHIVED, _('Archive')),
(PostState.REMOVED_BEFORE_PUBLISH, _('Removed before publish')),
(PostState.REJECTED_AFTER_PUBLISH, _('Rejected after publish')),
], default=PostState.NEW, verbose_name=_('Post state'), db_index=True)
我希望我在 phone_number 和 token 上的索引是基于 post_state 值的部分索引,我知道如何使用 Postgres shell 中的 SQL 命令执行此操作,但我不知道如何在 django 模型中执行此操作,所以它进入一个迁移文件。
【问题讨论】:
-
我从来没有做过,但也许条件约束会有所帮助? docs.djangoproject.com/en/3.2/ref/models/constraints/#condition 甚至可能是另一个 StackOVerflow 帖子:stackoverflow.com/questions/26410488/…
标签: django postgresql indexing partial partial-index