django分类模型实例

时间:2018-05-20 13:29:53

标签: python django django-models

当我跑步时:

python3 manage.py makemigrations 

保存以下代码后,显示错误:

  

todo.Task.status :( fields.E005)'选择'必须是包含(实际值,人类可读名称)元组的迭代。

我想根据待办事项,完整或不完整对每个Task实例进行分类。创建每个Task实例时都要指定此属性。任务将显示在HTML页面的不同列上。

以下代码不起作用:

from django.db import models

STATUS_CHOICES = ('complete', 'incomplete', 'todo')
class Task(models.Model):
    name = models.CharField(max_length = 128)  
    due = models.DateTimeField(blank = True, null = True)  
    status = models.CharField(max_length = 16, choices = STATUS_CHOICES)

    def __str__(self):
        return (f"{self.name}")

请帮助。

2 个答案:

答案 0 :(得分:1)

尝试为每个选择分配一个值

STATUS_CHOICES = (
    ('com','complete'),
    ('inc','incomplete'),
    ('to','todo'),
)

当然,您可以选择任何您想要的值

答案 1 :(得分:0)

来自django文档的

:Field.choices

可迭代(例如,列表或元组),其由恰好两个项目(例如[(A,B),(A,B)...])的可迭代组成,以用作该字段的选项。如果给出了这个,则默认表单小部件将是一个带有这些选项的选择框,而不是标准文本字段。

每个元组中的第一个元素是要在模型上设置的实际值,第二个元素是人类可读的名称。例如:

YEAR_IN_SCHOOL_CHOICES = (
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
   )