From 6394238004b181a101b7ce5f65623225db8992d1 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Thu, 11 Feb 2016 15:25:55 -0500 Subject: [PATCH] Exclude Reverse Foreign Keys from list_display These types of fields do not need to be included, and attempting to do so causes everything to break. --- common/djangoapps/config_models/admin.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/common/djangoapps/config_models/admin.py b/common/djangoapps/config_models/admin.py index 6003326936..a0753ff33c 100644 --- a/common/djangoapps/config_models/admin.py +++ b/common/djangoapps/config_models/admin.py @@ -31,7 +31,17 @@ class ConfigurationModelAdmin(admin.ModelAdmin): } def get_list_display(self, request): - return self.model._meta.get_all_field_names() + return self.get_displayable_field_names() + + def get_displayable_field_names(self): + """ + Return all field names, excluding reverse foreign key relationships. + """ + return [ + f.name + for f in self.model._meta.get_fields() + if not f.one_to_many + ] # Don't allow deletion of configuration def has_delete_permission(self, request, obj=None): @@ -40,7 +50,7 @@ class ConfigurationModelAdmin(admin.ModelAdmin): # Make all fields read-only when editing an object def get_readonly_fields(self, request, obj=None): if obj: # editing an existing object - return self.model._meta.get_all_field_names() + return self.get_displayable_field_names() return self.readonly_fields def add_view(self, request, form_url='', extra_context=None): @@ -160,7 +170,7 @@ class KeyedConfigurationModelAdmin(ConfigurationModelAdmin): def get_list_display(self, request): """ Add a link to each row for creating a new row using the chosen row as a template """ - return self.model._meta.get_all_field_names() + ['edit_link'] + return self.get_displayable_field_names() + ['edit_link'] def add_view(self, request, form_url='', extra_context=None): # Prepopulate new configuration entries with the value of the current config, if given: