在Django模型中设置默认排序规则

3 投票
1 回答
3143 浏览
提问于 2025-04-18 07:47

Django的文档上说默认的字符排序规则应该是'utf8',但实际上并不是。每次我运行syncdb来创建新表时,所有字符字段的默认排序规则都是'latin1_swedish_ci'。

同样的文档还提到:

Django并没有提供在模型定义中设置这个的方式。

有没有其他方法可以强制django的syncdb使用特定的字符字段排序规则呢?

1 个回答

0

一般来说(如果你想改变字符集和排序规则),你可以使用迁移,像这样:

# -*- coding: utf-8 -*-
# Generated by Django 1.11.10
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('some_model', 'A_previous_migration'),
    ]

    operations = [
        migrations.RunSQL('ALTER TABLE some_table CHANGE column_name column_name VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;'),
    ]

不过,你描述的情况有点奇怪,所以可能还有其他更好的方法来解决你具体的问题。

撰写回答