Changeset 6310
- Timestamp:
- 09/15/07 13:53:31 (1 year ago)
- Files:
-
- django/branches/newforms-admin/AUTHORS (modified) (1 diff)
- django/branches/newforms-admin/django/contrib/admin/media/js/admin/RelatedObjectLookups.js (modified) (1 diff)
- django/branches/newforms-admin/django/contrib/admin/options.py (modified) (1 diff)
- django/branches/newforms-admin/django/contrib/admin/widgets.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin/AUTHORS
r6128 r6310 202 202 Jason McBrayer <http://www.carcosa.net/jason/> 203 203 mccutchen@gmail.com 204 Christian Metts 204 205 michael.mcewan@gmail.com 205 206 mikko@sorl.net django/branches/newforms-admin/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
r5828 r6310 20 20 var name = win.name.replace(/___/g, '.'); 21 21 var elem = document.getElementById(name); 22 if (elem.className.indexOf('v RawIdAdminField') != -1 && elem.value) {22 if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) { 23 23 elem.value += ',' + chosenId; 24 24 } else { django/branches/newforms-admin/django/contrib/admin/options.py
r6239 r6310 169 169 if isinstance(db_field, models.ForeignKey) and db_field.name in self.raw_id_fields: 170 170 kwargs['widget'] = widgets.ForeignKeyRawIdWidget(db_field.rel) 171 return db_field.formfield(**kwargs)172 171 else: 173 # Wrap the widget's render() method with a method that adds 174 # extra HTML to the end of the rendered output. 175 formfield = db_field.formfield(**kwargs) 172 if isinstance(db_field, models.ManyToManyField) and db_field.name in self.raw_id_fields: 173 kwargs['widget'] = widgets.ManyToManyRawIdWidget(db_field.rel) 174 kwargs['help_text'] = '' 175 # Wrap the widget's render() method with a method that adds 176 # extra HTML to the end of the rendered output. 177 formfield = db_field.formfield(**kwargs) 178 # Don't wrap raw_id fields. Their add function is in the popup window. 179 if not db_field.name in self.raw_id_fields: 176 180 formfield.widget.render = widgets.RelatedFieldWidgetWrapper(formfield.widget.render, db_field.rel, self.admin_site) 177 return formfield181 return formfield 178 182 179 183 # For any other type of field, just call its formfield() method. django/branches/newforms-admin/django/contrib/admin/widgets.py
r6074 r6310 4 4 5 5 from django import newforms as forms 6 from django.utils.datastructures import MultiValueDict 6 7 from django.utils.text import capfirst 7 8 from django.utils.translation import ugettext as _ … … 76 77 else: 77 78 url = '' 78 attrs['class'] = 'vRawIdAdminField' # The JavaScript looks for this hook. 79 if not attrs.has_key('class'): 80 attrs['class'] = 'vForeignKeyRawIdAdminField' # The JavaScript looks for this hook. 79 81 output = [super(ForeignKeyRawIdWidget, self).render(name, value, attrs)] 80 82 # TODO: "id_" is hard-coded here. This should instead use the correct … … 86 88 #if self.change: # TODO 87 89 #output.append(' <strong>TODO</strong>') 90 91 class ManyToManyRawIdWidget(ForeignKeyRawIdWidget): 92 """ 93 A Widget for displaying ManyToMany ids in the "raw_id" interface rather than 94 in a <select multiple> box. 95 """ 96 def __init__(self, rel, attrs=None): 97 super(ManyToManyRawIdWidget, self).__init__(rel, attrs) 98 99 def render(self, name, value, attrs=None): 100 attrs['class'] = 'vManyToManyRawIdAdminField' 101 if value: 102 value = ','.join(value) 103 else: 104 value = "" 105 return super(ManyToManyRawIdWidget, self).render(name, value, attrs) 106 107 def value_from_datadict(self, data, files, name): 108 if isinstance(data, MultiValueDict): 109 return data[name].split(',') 110 return data.get(name, None) 88 111 89 112 class RelatedFieldWidgetWrapper(object):
