#python #django #postgresql #django-models
Вопрос:
У меня есть файл с константами, объявленными внутри классов:
class LanguageChoices:
EN = "English"
FR = "French"
@classmethod
def choices(cls):
return (
(cls.EN, _("English")),
(cls.FR, _("French")),
)
И мои модели:
from django.contrib.postgres.fields import ArrayField
from apps.users.constants import LanguageChoices
class Data(models.Model):
language = ArrayField(
models.CharField(
max_length=30, choices=LanguageChoices.choices()),
blank=True, null=True
)
)
Когда я пытаюсь выполнить миграцию, возникает эта ошибка (это происходит, даже если я удаляю все предыдущие файлы миграции и использую новую базу данных).:
Ошибка проверки системы: Проверка системы выявила некоторые проблемы:
ERRORS:
users.Data.language: (postgres.E001) Base field for array has errors:
'choices' must be an iterable containing (actual value, human readable name) tuples. (fields.E005)
ERROR: 1
Есть какие-нибудь идеи?
Ответ №1:
Что ж, оказывается, код хороший, после одного из значений (например, EN = «Английский») была маленькая запятая прямо посередине. VSCode не выдал никаких предупреждений, и мое зрение сыграло со мной какую-то шутку и скрыло это от меня.