class question(models.Model):
q = models.CharField(max_length=500)
choice1 = models.CharField(max_length=500)
choice2 = models.CharField(max_length=500)
choice3 = models.CharField(max_length=500)
answer = models.CharField(max_length=500, choices=[choice1, choice2, choice3])
这给了我这个错误:
“选择”必须是可迭代的,包含(实际值,人类可读的名称)元组。
但是我不知道如何解决?
谢谢
答案 0 :(得分:1)
您必须使用choices
字段,或者为“问题”和“选择”创建两个不同的模型,包括它们之间的关系。
如果创建choices
字段,则将无法为一个问题插入多个值。
示例:
class question(models.Model):
ANSWER_CHOICES = [
(F, 'Freshman'),
(S, 'Sophomore'),
(J, 'Junior'),
(S, 'Senior'),
]
question = models.CharField(max_length=500)
answer = models.CharField(
max_length=1,
choices=ANSWER_CHOICES,
null=TRUE,
)
另一方面,两种不同的模型将有效地解决您的问题。
示例:
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
答案 1 :(得分:0)
这是一个例子
personnelsex_choices = (('M','Male'),('F','Female'))
personnelsex = models.CharField('Gender',max_length=1,choices=personnelsex_choices, null=True)
您的错误消息要求输入iterable
,可以是list
,tuple
或生成器表达式等。在此示例中,它是tuple
。元组包含成对的值。该对的第一个值是存储在字段personnelsex
中的值,而第二个值是“人类可读的名称”,它将在应用程序中显示给用户。
在您的代码中,没有迭代项包含选择,当必须有两个(成对)时每个选择只有一个条目,并且没有必需的值。