【发布时间】:2023-03-21 15:00:01
【问题描述】:
我为多项选择题创建了一个模型。每个问题有5个选择 的答案。我需要每个问题对象都是独一无二的 问题和答案。所以,我这样设计模型。
from django.db import models
class MultipleChoiceQuestion(models.Model):
ANSWERS = [('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e')]
question = models.TextField()
a = models.TextField()
b = models.TextField()
c = models.TextField()
d = models.TextField()
e = models.TextField()
true_answer = models.CharField(max_length=1, choices=ANSWERS)
class Meta:
unique_together = [('question', 'a', 'b', 'c', 'd', 'e')]
当我运行migrate 时,mysql 报此错误:
1170, "BLOB/TEXT 列“问题”用于密钥规范 没有密钥长度”
我发现这个错误已经被讨论过here。但是,我不能使用
CharField 限制很小,因为我需要存储长文本
(直到 10000 个字符或更多)。
sqlite3 和 postgresql 可以做到这一点(我的意思是 django 没有抱怨
TEXT 的关键规范)。
我需要使用 mysql 的原因是我将部署它的服务器 django app只提供mysql,不提供postgresql。
那么,我有没有办法做到这一点?
【问题讨论】: