Как получить все поля с вариантами выбора в модели Django?

У меня есть модель Django с дюжиной полей с параметрами выбора, и я хочу сериализовать их значения для записи в CSV-файл.

Как мне обойти поля, чтобы найти те, в которых есть опции Choices? Что-то вроде этого:

for field in MyModel._meta.fields:
    if field.has_choices_on_it():
        print(f.name)

У каждого поля есть .choices, которое по умолчанию None, поэтому мы можем проверить, является ли оно None. Заметьте, однако, что .choices не обязательно должен быть последовательностью значений, это может быть и функция, которая выдает значения, когда это необходимо (например, потому что она делает запросы к базе данных, использует API и т. д.).

for field in MyModel._meta.fields:
    if field.choices is not None:
        print(f.name)
        choices = field.choices
        if callable(choices):
            choices = choices()
        print(choices)
Вернуться на верх