Я определил a User
класс, который (в конечном счете) наследовался models.Model
. Я хочу получить список всех полей, определенных для этой модели. Например, phone_number = CharField(max_length=20)
. В основном я хочу получить что-либо, что наследовалось Field
класс.
Я думал, что смогу получить их путем использования в своих интересах inspect.getmembers(model)
, но список, который это возвращает, не содержит ни одного из этих полей. Похоже, что Django уже овладел классом и добавил все его волшебные атрибуты и разделил, что было на самом деле определено. Так..., как я могу получить эти поля? У них, вероятно, есть функция для получения их в их собственных внутренних целях?
Вы должны использовать get_fields()
:
[f.name for f in MyModel._meta.get_fields()]
Метод get_all_field_names()
является устаревшим, начиная с Django
1.8 и будет удален в 1.10.
На странице документации по ссылке выше приведена полностью обратно совместимая реализация get_all_field_names()
, но для большинства целей предыдущий пример должен работать просто отлично.
model._meta.get_all_field_names()
Это должно сработать.
Для этого требуется реальный экземпляр модели. Если у вас есть только подкласс django.db.models.Model
, то вы должны вызвать myproject.myapp.models.MyModel._meta.get_all_field_names()