Kaydet (Commit) e2740dd4 authored tarafından Malcolm Tredinnick's avatar Malcolm Tredinnick

Fixed #7630 -- Slight tweak to the custom form widget exampleto avoid any

confusion. Based on a patch from Christian Tanzer.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7845 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst 3cfa3cbd
...@@ -1817,15 +1817,21 @@ reuse certain sets of widget attributes over and over again. Rather than ...@@ -1817,15 +1817,21 @@ reuse certain sets of widget attributes over and over again. Rather than
repeat these attribute definitions every time you need them, Django allows repeat these attribute definitions every time you need them, Django allows
you to capture those definitions as a custom widget. you to capture those definitions as a custom widget.
For example, if you find that you are including a lot of comment fields on forms, For example, if you find that you are including a lot of comment fields on
you could capture the idea of a ``TextInput`` with a specific ``size`` attribute forms, you could capture the idea of a ``TextInput`` with a specific
as a custom extension to the ``TextInput`` widget:: default ``size`` attribute as a custom extension to the ``TextInput`` widget::
class CommentWidget(forms.TextInput): class CommentWidget(forms.TextInput):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
kwargs.setdefault('attrs',{}).update({'size': '40'}) attrs = kwargs.setdefault('attrs',{})
if 'size' not in attrs:
attrs['size'] = 40
super(CommentWidget, self).__init__(*args, **kwargs) super(CommentWidget, self).__init__(*args, **kwargs)
We allow the ``size`` attribute to be overridden by the user, but, by default,
this widget will behave as if ``attrs={'size': 40}`` was always passed into the
constructor.
Then you can use this widget in your forms:: Then you can use this widget in your forms::
class CommentForm(forms.Form): class CommentForm(forms.Form):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment