Django


1135 浏览 5 years, 6 months

6.11 常见问题

版权声明: 转载请注明出处 http://www.codingsoho.com/

Issue

form.save(commit=False)保存时会创建一个新的实例

解决方式:要指定instance

form = self.form_class(request.POST, instance=self.get_object())  
        if form.is_valid():            
            user = form.save(commit=False)

或者调用

form = self.get_form() 
    def get_form(self, form_class=None):
        """
        Returns an instance of the form to be used in this view.
        """
        if form_class is None:
            form_class = self.get_form_class()
        return form_class(**self.get_form_kwargs()) 
    def get_form_kwargs(self):
        """
        Returns the keyword arguments for instantiating the form.
        """
        kwargs = super(ModelFormMixin, self).get_form_kwargs()
        if hasattr(self, 'object'):
            kwargs.update({'instance': self.object})
        return kwargs   
    def get_form_kwargs(self):
        """
        Returns the keyword arguments for instantiating the form.
        """
        kwargs = {
            'initial': self.get_initial(),
            'prefix': self.get_prefix(),
        }

        if self.request.method in ('POST', 'PUT'):
            kwargs.update({
                'data': self.request.POST,
                'files': self.request.FILES,
            })
        return kwargs   
RegistrationForm' object has no attribute 'clean_data

关于Django中出现上述问题的解决方法
code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Newfo...Karen
上述网址第八条
Django语法更新 Newforms:clean_data------>cleaned_data