Django классифицирует экземпляры модели - PullRequest
0 голосов
/ 20 мая 2018

Когда я запускаю:

python3 manage.py makemigrations 

после сохранения приведенного ниже кода, отображается ошибка:

todo.Task.status: (fields.E005) «выбор» долженбыть итерируемым, содержащим (фактическое значение, понятное человеку имя) кортежи.

Я хочу классифицировать каждый экземпляр Задачи в соответствии с заданным, полным или неполным.Это свойство должно быть указано при создании каждого экземпляра задачи.Задачи должны быть показаны в разных столбцах на странице 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 голосов
/ 20 мая 2018

из документации django: Field.choices

Итерация (например, список или кортеж), состоящая из итераций ровно двух элементов (например, [(A, B), (A, B) ...]) использовать в качестве выбора для этого поля.Если это задано, виджетом формы по умолчанию будет поле выбора с этими вариантами выбора вместо стандартного текстового поля.

Первый элемент в каждом кортеже - это фактическое значение, устанавливаемое в модели, а второй -Элемент - это читаемое имя.Например:

YEAR_IN_SCHOOL_CHOICES = (
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
   )
0 голосов
/ 20 мая 2018

попробуйте присвоить значение каждому варианту

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

Конечно, вы можете выбрать любое значение, которое вы хотите

...