Django dumpdata: Ошибка "Unable to serialize database" из-за переменной BitFlagField

Я пытался создать приспособление таблицы, но оно всегда терпело неудачу со следующим сообщением: CommandError: Unable to serialize database: __str__ returned non-string (type method). Стек-трейс был столь же бесполезен, указывая на один из файлов Django в качестве виновника.

После некоторого возиться, мне удалось определить виновника в models.py:

class UserExtra(model.Models):
(...)
blocked = BitFlagField(
    flags=(
        'manual', 'system', 'tries', 'expired', 'inactivity',
        'nosys_nobypass'
    ),
    db_column='ind_block'
)

Класс представляет собой только список переменных и не имеет какой-либо функции. Если я удалю этот var и запущу команду dumpdata, она работает. Как мне сериализовать это поле?

Как Ян Шелвингтон помог мне выяснить в комментариях выше, BitFlagField - это пользовательский тип, и проблема была в возврате его функции __str__, поскольку она вызывала метод __repr__ неправильным образом (return self.__repr__).

Закрываю, потому что проблема первоначального вопроса была решена, хотя это привело к другой проблеме.

Вернуться на верх