我是 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。
