On Thu, 2007-05-17 at 11:58 -0700, Dannoo wrote: > I have a few questions about the best ways to extend the Field and > Form classes that are part of django newforms. > > For example, create a Field that is like a charField but gets a list > of strings which should be rendered as a comma delimited in the text > widget. When that filed is cleaned the comma delimited list of > elements is parsed and returned as a list of strings. > > Issues: > The Field class has a clean function that gets the widget's data, > validates it and converts it into a usable python type. Shouldn't > there be also be a Field function (unclean?? ), that takes data and > converts it into a type that can be used by the widget?
The form that the widget wants to use for presentation is a widget issue, not a field issue. Use the render() method on widgets to do this processing. Before you start wondering if this is inconsistent (why isn't the widget responsible for turning the data into something a field can use in the reverse case?), it isn't. There is also value_from_datadict() on widgets that puts the responsibility for converting funky data formats into something the Field subclass can use squarely into the widget's area of responsibility. > > It seems like there is three different ways of getting data into the > fields. Two, not three, but there isn't any real redundancy here, either. The two methods are used at different times in the creation process in order to provide different levels of access (whether you are working on a field-by-field basis or with the form as a whole). > 1. the Field's initial data. Mostly used for providing suggested initial values when constructing field-by-field (e.g. from a model). Overridden by any data passed in at the Form level, which supports the (quite valid) notion that Field-level initial data is just a fallback initial value that is of lower value than data passed into the form itself. > 2. the Form's initial data. Mostly used when filling a form with data in a holistic fashion. For example, when you are processing form input and using that data to create a form instance you can validate and work with. > 3. the data in a bounded Form. This is just the data created in step 2. A bound form, internally, is simply a BaseForm instance that contains data. Regards, Malcolm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---