Django:不unique_together意味着db_index=True以同样的方式,外键吗?
-
27-10-2019 - |
题
一个领域上的一个模型, foo = models.ForeignKey(Foo)
将自动添加数据库的指数,用于列,以便使查询更快。这是很好的,好的,但强哥的文档不状态是否领域,在模型的元的 unique_together
收到同样的处理。我碰巧有一个模型,在该模型中的一个焦炭领域,其中列出 unique_together
需要一个指数,用于快速查找。我知道这不会伤害任何东西添加一个重复的 db_index=True
在该领域的定义,但是我好奇。
解决方案
unique_together
不会自动为列表中包含的每个字段添加索引。
新版Django建议改用“索引和约束”元选项:
https://docs.djangoproject.com/zh / 2.2 / ref / models / options /#unique-together
https://docs.djangoproject.com/zh / 2.2 / ref / models / options /#index-together
其他提示
如果unique_together
确实添加了索引,则它将是多列索引。
如果您希望对其中一列进行单独索引,我相信您需要在字段定义中指定db_index=True
。
在 Django1.5和高, 你可以使用 {Model}.Meta.index_together
类属性。如果你有两个领域命名的 foo
和 bar
, 你会添加:
class Meta(object):
index_together = unique_together = [
['foo', 'bar']
]
如果你只有一套独特的领域,可以使用一个维迭代为 unique_together
.但是, 该文件 并不表示同样适用于 index_together
.
这也没关系:
class Meta(object):
unique_together = 'foo', 'bar'
index_together = [
['foo', 'bar']
]
然而,这是 不 支持文件:
class Meta(object):
unique_together = 'foo', 'bar'
index_together = 'foo', 'bar'