Как получить все поля с вариантами выбора в модели 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)