Поле Django arrayField — Выбор из класса констант — ПОЛЯ ОШИБОК.E005

#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 не выдал никаких предупреждений, и мое зрение сыграло со мной какую-то шутку и скрыло это от меня.