Джанго: Как обновить один объект - PullRequest
0 голосов
/ 13 апреля 2019

Итак, у меня есть веб-сайт с календарем, к которому пользователь может добавлять события. Они могут создавать новое событие для добавления в календарь или редактировать текущие события, которые они уже добавили в календарь. Однако, когда они редактируют событие, которое уже было добавлено, и нажимают кнопку отправки, чтобы опубликовать его, оно создает новое событие, а не редактирует текущее. Я пытаюсь получить его там, где, когда они редактируют добавленное событие, вместо создания нового события при отправке, он редактирует текущее, на которое они нажали в первую очередь. .

views.py

def event(request, event_id=None):

    if event_id:
        instance = get_object_or_404(Event, pk=event_id)
        print(instance)
    else:
        instance = Event()

    form = EventForm(request.POST or None, instance=instance)

    if request.POST and form.is_valid():
        event = Event.objects.create(**form.cleaned_data, user=request.user)
        return HttpResponseRedirect(reverse('cal:calendar'))
    return render(request, 'cal/event.html', {'form': form})

1 Ответ

0 голосов
/ 13 апреля 2019

Вы не должны использовать Event.objects.create.EventForm - это ModelForm, так как вы передаете ему instance;Таким образом, вы можете вызвать его save метод.

if form.is_valid():
    event = form.save(commit=False)
    event.user=request.user
    event.save()
    return HttpResponseRedirect(reverse('cal:calendar'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...