繁体   English   中英

django模型表格自动编辑

[英]django model form edit automatically

我有一个小问题:)我想直接使用Django模型添加/编辑用户。 我做到了:

class AddClientView(generic.FormView):
success_url = 'manager/liste'
form_class = AddClientForm
template_name = 'Manager/Clients/formClient.html'

def get_context_data(self, **kwargs):
    retour = super(AddClientView, self).get_context_data()
    retour['forms'] = AddClientForm

    return retour

def form_valid(self, form):
    retour = super(AddClientView, self).form_valid(form)
    form.save()

    return retour


class EditClientView(generic.FormView):
success_url = '/manager/liste'
form_class = AddClientForm
template_name = 'Manager/Clients/formClient.html'

def get_context_data(self, **kwargs):
    retour = super(EditClientView, self).get_context_data()
    client = Clients.objects.get(id=self.kwargs["client"])
    retour['forms'] = AddClientForm(instance=client)
    retour['client'] = client
    return retour

def form_valid(self, form):
    retour = super(EditClientView, self).form_valid(form)
    a = Clients.objects.get(id=self.kwargs['client'])
    a.prenom = form.cleaned_data['prenom']
    a.nom = form.cleaned_data['nom']
    a.telephone = form.cleaned_data['telephone']
    a.mail = form.cleaned_data['mail']
    a.adresse = form.cleaned_data['adresse']
    a.date_anniversaire = form.cleaned_data['date_anniversaire']

    a.save()

    for pConseomme in form.cleaned_data['pConsomme']:
        a.pConsomme.add(pConseomme)

    for pInteret in form.cleaned_data['pInteret']:
        a.pInteret.add(pInteret)

    return retour

对于编辑,我想做与添加相同的操作,就像这样:只是一个

form.save()

但是它不起作用...它创建了一个新用户。 我该怎么做? 多谢你们 !

您可以对编辑执行相同的操作,但是考虑添加新用户和更新用户不是同一回事。 添加时,它会创建一个新用户,但是在编辑时,您应该首先找到该特定用户并更改其数据,然后再保存模型。

user= get_object_or_404(User, pk=form.cleaned_data['user'].pk)

您可以使用get_object_or_404()根据其pk查找用户,并执行与添加时相同的过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM