Django - 在DB答案中存储可以是数字还是文本的最佳方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django - 在DB答案中存储可以是数字还是文本的最佳方法是什么?相关的知识,希望对你有一定的参考价值。

我正在做一个学生调查项目。存储问题的模型类似于:

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

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

什么样的领域应该在answers model存储这些答案?也许是TextField?

答案

如果你想使用相同的列来打开文本,你可以选择文本...所以你可以在用户选择选项时编写固定文本而不是设置1,2,3,4,这样可以使你的数据更具可读性

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

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

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(“他跋涉的方式” )会引发错误

另一答案

使用TextField可能是一个坏主意,因为你将intstring类型的物体混合,绝对不推荐。

你可以做的一件事是将其视为两个不同的领域。一个Choicefield和一个TextField。这样,当用户想要使用开放式答案时,用户可以选择空值(空字符串'')。然后,您可以将空字符串计算为以后的任何内容。

以上是关于Django - 在DB答案中存储可以是数字还是文本的最佳方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

Django没有在db中存储确切的UTC时间

Django - 在模板的for循环中迭代数字

Django中的默认权限/组数据

如何将图像引用放在 Django db 的字符字段中?

Django:使用base64在DB中存储图像

Django pyodbc 支持 Nexus DB 还是依赖于数据库?