Skip to main content
 首页 » 编程设计

python之Django 。简单的 FormView 不保存

2025年05月04日45bonelee

我是 django 通用 FormView 的新手。我遗漏了一些明显的东西,表单正确呈现但它没有保存数据:

表单.py

from perfiles.models import Perfil 
 
class FormEditarPerfil(forms.ModelForm): 
 
    class Meta: 
        model = Perfil 
        fields = ('descripcion',) 

views.py

from django.views.generic.edit import FormView 
from forms import FormEditarPerfil 
 
class EditarPerfil(FormView): 
    template_name = "perfiles/editar_perfil.html" 
    form_class = FormEditarPerfil 
 
    def get_success_url(self): 
        url = reverse_lazy('perfiles:propio', kwargs={'username': self.request.user.username}) 
        return url 

请您参考如下方法:

您需要更改 View 的 form_valid 方法,因为 FormView 类不调用 form.save() 而只是重定向用户到成功 url。

def form_valid(self, form): 
    form.save() 
    return super(EditarPerfil, self).form_valid(form) 

不过,我同意@Filly 的回答。如果要创建新对象,请使用 CreateView,否则,请使用 UpdateView。