Django - 在数据库中存储数字或文本答案的最佳方式是什么?

Django - What is the best way to store in the DB answers that can be numerical or text?

我正在做一个学生调查项目。存储问题的模型是这样的:

ID     Question                 Type 
1      is good teacher?         Choice 
2      What do you like about   Open-answer
       the teacher?

然后在 choice 类型的问题中,学生将选择一个选项(例如:完全同意),这将存储一个数字代码(例如 5)。但是在开放式问题中,学生会写文字。

answers model中应该用什么样的字段存储这些答案?也许是 TextField?

如果您想使用同一列打开文本,您可以将您的选择作为文本...所以您可以在用户 select 选项时写一个固定的文本,而不是设置 1、2、3、4,所以这会让你的数据更易读

ANSWER = (
    ("Yes", "Yes"),
    ("No", "No"),
    ("Neutral", "Neutral"),
)

或再创建 2 列...一列用于设置问题类型(select 或文本),另一列用于存储选项(这样您就可以设置为外键而不是使用静态值这可以从一个模型加载)

ID     Question                 Type             Answer-Text         AnswerID 
1      is good teacher?         Choice           null                1
2      What do you like about   Open-answer      "The way he swag"   null
       the teacher?

或者将所有内容与 String 混合...但是获取此整数 ID 时会遇到一些麻烦...当您尝试将其作为整数获取时会抛出一些错误 int("1") 可以,但 int("The way he swag") 会引发错误

使用 TextField 可能不是一个好主意,因为您将 intstring 类型的对象混合使用,这绝对不推荐。

您可以做的一件事是将其视为两个不同的领域。一个 Choicefield 和一个 TextField。这样,当用户想要使用 open-answer 时,他可以选择一个空值(空字符串 '')。然后您可以稍后计算空字符串。