#python #django #object #view
#python #django #объект #Вид
Вопрос:
Итак, у меня есть этот веб-сайт календаря, на который пользователь может добавлять события. Они могут создать новое событие для добавления в календарь или редактировать текущие события, которые они уже добавили в календарь. Однако, когда они редактируют уже добавленное событие и нажимают кнопку отправки, чтобы опубликовать его, создается совершенно новое событие вместо редактирования текущего. Я пытаюсь добиться того, чтобы при редактировании добавленного события вместо создания нового события при отправке оно редактировало текущее, на которое они нажали в первую очередь.
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:
Вы не должны использовать 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'))