2014-01-23 4 views
1

В настоящее время я показываю свои поля в интерфейсе администратора django через model._meta.get_all_field_names(). Теперь это прекрасно работает, но также отображает первичный ключ набора данных (который, на мой взгляд, выглядит не очень красивым).Получить все поля, кроме одного

Так что мой вопрос: есть ли «ленивый» способ получить все поля, кроме одного или нескольких? Или я должен написать каждое поле для одного (ов) Я не хочу, чтобы отобразил в кроме list_display = array_of_fields_to_be_displayed

ответ

4

Вы можете использовать model._meta.fields атрибут, который представляет собой список Field экземпляров:

[field.name for field in model._meta.fields if not field.primary_key] 

каждый Field имеет атрибут primary_key (True, если поле является первичным ключом) и атрибут name (ну, название поля).

Рабочий пример на auth.models.User:

>>> [field.name for field in User._meta.fields if not field.primary_key] 
['password', 'last_login', 'is_superuser', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined'] 

Там нет id поля на выходе. Наверное, хорошо.

Смежные вопросы