如何使用django.models将“ BINARY”设置为MySQL的VARCHAR列定义?

杉村晃平

我有以下简单的模型。

from django.db import models
class ItemAttr(models.model):
    name = models.CharField(max_length=255)
    value = models.CharField(max_length=255)

转换成

CREATE TABLE `webapp_itemattr` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `name` varchar(255) NOT NULL,
    `value` varchar(255) NOT NULL
)

现在,我想在“名称”字段中区分大小写。怎么办 我的目标是开始遵循SQL。

CREATE TABLE `webapp_itemattr` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `name` varchar(255) BINARY NOT NULL,
    `value` varchar(255) NOT NULL
)

直接应用ALTER TABLE SQL,就可以了。但是在django单元测试中,此MODIFY SQL不适用。

ALTER TABLE webapp_itemattr MODIFY name VARCHAR(255) BINARY NOT NULL;
沃伦德拉

解决方法是,您可以从CharField继承并创建自己的字段:

class CustomBinaryCharField(models.CharField):
    def db_type(self, connection):
        return super(CustomBinaryCharField, self).db_type(connection) + ' binary'

这是有关自定义字段的Django文档链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将 mysql 中的 ATTRIBUTES 设置为 BINARY?

Django将主键发布为slug?如何在models.py中引用主键?

当Django models字段为空时,将value设置为Default value

如何将varchar设置为真实日期?

EF Core-如何避免使用自定义的RequiredAttribute将数据库列设置为不可为空

如何使用python MySQL Connector将时区设置为纽约?

如何使用jQuery将两列的高度设置为最高?

如何使用熊猫将特定列设置为int类型

如何使用CSS将列设置为100%在体内的高度

是否可以将网址设置为“:name”而不是“ models /:id”?

使用 Python 3/Django,如何将 MySql 表数据导出为 YAML 文件?

将值设置为列但使用索引

如果存在特定行,如何将MYSQL列设置为特定值?

如何使用django-elasticsearch-dsl将django-modeltranslation创建的列索引到Elastic?

如何使用 Bootstrap 4 使用卡片将水平布局设置为定义列表

MySQL将表/列设置为变量

如何将django-avatar与我自己的用户模型一起使用,而不与django.contrib.auth.models.User一起使用

如何在models.py(Python - Django)中设置自定义值

Django-models.py models.E006将参数传递给函数

如何使用Java 8流将HashMap的值设置为自定义Java对象?

将当前模型从 models.Model 集成到 BaseModel django

Django:防止将表单保存在 models.py 中

如何将jQuery变量设置为Django模板变量

如何将 url id 设置为特定字段 django

如何将ArrayField定义为Django表单

熊猫如何使用.loc根据其他列中的值将列设置为NaN

如何将字符串转换为django.db.models.query_utils.Q格式?

如何将models.IntegerField()转换为整数?

如何将 models.IntegerField() 实例转换为 int?