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

问题描述 投票:0回答:2

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

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

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

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

django django-models django-database
2个回答
0
投票

如果你想使用相同的列来打开文本,你可以选择文本...所以你可以在用户选择选项时编写固定文本而不是设置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(“他跋涉的方式” )会引发错误


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.