Форма модели Django редактируется автоматически - PullRequest
0 голосов
/ 17 октября 2018

У меня небольшой вопрос :) Я хочу добавить / отредактировать пользователя напрямую с моделью 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()

Но это не работает ... он создаетновый пользователь.Как я могу это сделать?Спасибо, парни !

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете сделать то же самое для редактирования, но рассмотреть возможность добавления нового пользователя и обновления пользователя - это не одно и то же.Когда вы добавляете, он создает нового пользователя, но при редактировании вы должны сначала найти конкретного пользователя и изменить его данные, а затем вы можете сохранить модель.

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

Вы можете get_object_or_404() найти пользователяв соответствии с pk и той же процедурой, которую вы выполняли при добавлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...