(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'),
]