Django классифицирует экземпляры модели

Когда я бегу:

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 ответа

Решение

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

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

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

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

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

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

конечно, это ваш выбор, чтобы выбрать любое значение, которое вы хотите

Другие вопросы по тегам