On Thu, Jan 7, 2010 at 10:40 AM, Honza Král <honza.k...@gmail.com> wrote: > ModelForm has a save() method that saves the model. It is reasonable > to assume that if the form is valid, the save() method call should > succeed, that's why the entire model is validated.
Actually, I can see a strong argument against this: if I've defined a form class that I think constructs valid instances, and it doesn't, that's a bug in my form and Django should be making this as clear as possible. Of course, the flip side is that the bug in my form may be something subtle which breaks a constraint specified at the Python level but not at the DB level, and so the additional automatic validation could be the only way to catch it. > 2) Are you OK with ripping save(commit=False) functionality to some > other method? (current functionality can stay with a deprecation > warning for example) No. Suppose I have a ModelForm and call save(commit=False) to get the instance so I can do some more work on it. I'm basically saying to Django "I don't think this object is ready to be saved yet, but I need the object so I can do stuff to it". If Django goes ahead and does implicit model validation there and raises an exception, it's just telling me what I already knew: the object's not ready to be saved. But now I get to do extra work to catch the exception, and that's bad and wrong. Calling ModelForm.save(commit=False) should simply disable model validation, period. If I want to validate the instance before saving it, I'll validate the instance before saving it, but commit=False is as clear a way as we have of saying "I'm not going to save this yet" and model validation should respect that. -- "Bureaucrat Conrad, you are technically correct -- the best kind of correct."
-- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.