(fields.E005) 'choices' должен быть итерируемым файлом, содержащим (фактическое значение, читаемое человеком имя) кортежей

Я создал эту модель ниже и работал нормально почти целую неделю. Закрыл сервер и запустил его снова, и он выдал мне ошибку (fields.E005) 'choices' must be an iterable containing (actual value, human readable name) tuples. Использовал документацию django в точности, но решения так и нет.

`class Inspection(models.Model):

RESULT_CHOICES = [
    ("PR"  "Passed"),
    ("PR"  "Passed with minor Defects"),
    ("PR"  "Passed with major Defects"),
    ("FR"  "Failed due to minor Defects"),
    ("FR"  "Failed due to major Defects"),
    ("FR"  "Failed"),
]

vin_number = models.ForeignKey(Vin, on_delete=models.CASCADE, related_name='inspections')
inspection_number = models.CharField(max_length=20)
year = models.CharField(max_length=4)
inspection_result = models.CharField(max_length=30, 
choices=RESULT_CHOICES)
ag_rating = models.CharField(max_length=30)
inspection_date = models.DateField()
link_to_results = models.CharField(max_length=200)

def __str__(self):
    return self.inspection_number`

Я пытался: YEAR_IN_SCHOOL_CHOICES = { "FR": "Freshman", "SO": "Sophomore", "JR": "Junior", "SR": "Senior", "GR": "Graduate", }

но все равно не работает. Невозможно даже мигрировать из-за ошибки

В точности использовал документацию по django, но решения все равно нет.

You made a list of strings, not a list of 2-tuples, of strings. You should add a comma after 'PR'. There is a difference between 'foo' 'bar' and 'foo', 'bar'. For the former, you use string literal concatenation [python-doc]:

RESULT_CHOICES = [
    #    🖟 comma (,)
    ('PR', 'Passed'),
    ('PR', 'Passed with minor Defects'),
    ('PR', 'Passed with major Defects'),
    ('FR', 'Failed due to minor Defects'),
    ('FR', 'Failed due to major Defects'),
    ('FR', 'Failed'),
]

Но это все равно не сработает: ключи должны быть уникальными, иначе, будучи сохраненными в базе данных, они не смогут извлечь точный выбор.

Так что что-то вроде:

RESULT_CHOICES = [
    ('PR', 'Passed'),
    ('PRA', 'Passed with minor Defects'),
    ('PRI', 'Passed with major Defects'),
    ('FRA', 'Failed due to minor Defects'),
    ('FRI', 'Failed due to major Defects'),
    ('FR', 'Failed'),
]
Вернуться на верх