python - Django - 限制 unique_together 列上的键大小

标签 python django django-models

使用 MySQL,我试图创建一个包含多个字段的复合键的表。

问题是一些字段很大(255 - 1024 长度),如果我尝试运行迁移,我将得到:

django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes')

而不是增加数据库的键长度(或更改其他一些数据库/表设置),我发现我可以限制用作迁移文件中键的字段的值,以便它保持在最大键内长度,像这样:

ALTER TABLE <table> ADD UNIQUE KEY `<table>_composite_key` (`col1`, `col2`(75), `col3`, `col4`, `col5`(150));

但是,如果我要更改数据库引擎,这是一个问题,因为该语法可能与其他语法不兼容。

所以我想知道有没有办法对 unique_together 中的每个字段施加限制?

提前致谢!

最佳答案

现在 Django 不支持约束,但在不久的将来会支持。 现在您可以添加 TODO 以在 Django 2.2 发布时更新它。 现在约束的API不多了。

参见:https://docs.djangoproject.com/en/2.2/ref/models/constraints/

这不是您问题的答案,但可以帮助您解决这个问题。

关于python - Django - 限制 unique_together 列上的键大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53988530/

相关文章:

python - 表中所有列的 Flask-appbuilder TableView

python - 如何从 Tensorflow 中的检查点文件加载单个张量?

python - 在没有数据库的情况下在 Django 中进行身份验证

python - Postgres 突然出现错误 '/usr/lib/libpq.5.dylib'(没有这样的文件)

python - 一个模型 django 的两个管理类

python - 使用 Crontab 交错执行任务

python - 我应该把这些功能放在哪里?在 models.py 内还是在views.py 内?

django - 依靠 Django 查询集中的多个字段

python - Django 1.8 迁移 - CircularDependencyError

python - 显示文本框而不是日期选择器的 DateTimeField