Django:如何更新单个对象

时间:2019-04-13 19:47:36

标签: python django object view

所以我有这个日历网站,用户可以向其中添加事件。他们可以创建一个新事件以添加到日历中,或者可以编辑已经添加到日历中的当前事件。但是,当他们编辑已添加的事件并单击“提交”按钮将其发布时,它将创建一个全新的事件,而不是编辑当前事件。我尝试将其添加到他们编辑已添加事件的位置,而不是在提交时创建新事件,而是编辑他们首先单击的当前事件

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 :(得分:0)

您不应使用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'))