我有一个具有唯一约束的模型(或者更确切地说是unique_together):
class ReadingMapping(models.Model):
mapset = models.ForeignKey('mapping.ReadingMapset')
data = models.CharField(max_length=500, verbose_name="attributes")
class Meta:
unique_together = ('mapset', 'data')
但是因为我使用MYSQL作为后端,所以比较是不区分大小写的,因为collation / charset是默认的MYSQL或Django(这是正确的吗?)并且我需要它区分大小写。< / p>
从阅读中我收集到的这不能直接在Django模型中,所以我需要改变数据库上的表(参见this SO question)
我的第一个问题是改变表格的正确SQL语句是什么,或者更确切地说是列。我不确定是否需要更改字符集或只是整理,或者尽管阅读了各种来源,我应该将其设置为哪种字符集/校对。
我的第二个问题是如何将此更改作为迁移的一部分(我们将拥有数十个数据库)我可以创建一个带有SQL语句的任意迁移文件吗?
答案 0 :(得分:0)
我发现以下内容适用于迁移文件:
class Migration(migrations.Migration):
dependencies = [
('mapping', '0003_auto_20170725_0737'),
]
operations = [
migrations.RunSQL("ALTER TABLE mapping_readingmapping CONVERT TO CHARACTER SET latin1 COLLATE latin1_general_cs;")
]