> On 3/15/06, Christopher Lenz <[EMAIL PROTECTED]> wrote: >> I definitely agree that the model layer should do validation, as long >> as that doesn't mean it's the *only* layer that does validation >> (that's not how I understood the proposal, but some some of the >> comments seemed to imply that). I may have forms that don't map 1:1 >> to models; for those, parts of the validation must be done by the >> formwrapper/manipulator, and other parts by the model classes. > > The model layer certainly isn't the *only* layer that does validation. > Of course, Django will continue to support custom forms and validation > logic on a level that's decoupled from models. > >> There's a thin line here between convenient auto-conversion (e.g. >> strings to numbers) and overloading the model class with logic that >> simply doesn't belong there. In your web layer code, you have >> something akin to a manipulator sitting between your model classes >> and the view. The manipulator would be responsible for unmarshalling >> POST parameters into a data structure that can be handled by the >> model, including parsing stuff like dates and exploding "dotted" >> parameters into nested dicts or whatever. > > Right -- that's exactly what will happen. > >> Example: the string representation of a date in may depend on the >> locale of the remote user, which the model knows nothing about. The >> conversion from string to datetime will need to happen in a layer >> that is aware of the HTTP request context. (This is a somewhat >> contrived example due to the abysmal state of international datetime >> formatting/parsing in the Python standard library, but I'm sure there >> are other examples). > > In this example, the view code would perform that logic -- not the > model layer. The model layer is only responsible for *critical* > validation logic that applies to *every instance of the model, ever* > -- not special-cases. For special cases, you'll use a custom > form/manipulator, just like before.
Thanks for the clarification... matches my understanding of the proposal, I just had the feeling there was some confusion about these points in this thread (e.g. Model.html2python, which is what manipulators are for). Cheers, Chris -- Christopher Lenz cmlenz at gmx.de http://www.cmlenz.net/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@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-developers -~----------~----~----~----~------~----~------~--~---