def _get_filter(field): if isinstance(field, (tuple, list)): info = _get_filter(field[0]) info['field_title'] = field[1] + ': ' + info['field_title'] return info if isinstance(field, six.string_types): orign = field opts = self.opts fields = field.split('__') title = '' for f in fields: field = opts.get_field_by_name(f)[0] rel = getattr(field, 'related_model', None) if rel: opts = field.related_model._meta #~ print field, dir(field) title += force_text(opts.verbose_name) + ': ' #~ field = field.field elif hasattr(field, 'parent_model'): title += force_text(field.verbose_name) field = field.field else: #~ print field, dir(field) title += force_text(field.verbose_name) else: orign = field.name title = force_text(field.verbose_name) return { 'model': force_text(field.model._meta), 'field': orign, 'field_title': title, 'widget': get_widget_from_field(field, True).get_dict(), }
def prepare_widget(self, field_name): """ Возвращает виджет с заменой атрибутов, согласно настроек текущего класса. """ dic = dict([ (field.name, field) for field in self.get_fields_objects() ]) widget = get_widget_from_field(dic[field_name]) if not widget.is_configured: if self.list_display_css.has_key(field_name): new_class = '%s %s' % (widget.attr.get('class', ''), self.list_display_css[field_name]) widget.attr.update({'class': new_class}) widget.is_configured = True return widget