Редактирование объекта с использованием формы - PullRequest
0 голосов
/ 15 мая 2011

Привет всем, я новичок в Django, поэтому у меня проблемы с выяснением этого.

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

def event_page(request):
if request.method == 'POST':
    form = EventForm(request.POST)
    if form.is_valid():
        event = Event.objects.create(
        user=request.user,
        eventname = form.cleaned_data['eventname'],
        eventdate = form.cleaned_data['eventdate'],
        eventtime = form.cleaned_data['eventtime'],
        address = form.cleaned_data['address'])
        event.save()
        return HttpResponseRedirect(
            '/user/%s/' % request.user.username
        )
else:
        form = EventForm()
variables = RequestContext(request, {
        'form': form
    })
return render_to_response('events.html', variables)

Кто-нибудь может помочь сделать эту форму, чтобы она также позволяла редактировать?

Спасибо!

1 Ответ

0 голосов
/ 15 мая 2011

Это довольно легко, если вы используете ModelForm (http://docs.djangoproject.com/en/1.3/topics/forms/modelforms/)

Пример кода будет выглядеть примерно так:

def event_page(request, event_id=None):
    """Return a form allowing the user to create or edit
    an event. On a POST request, process the form."""

    # get an event instance: use a dummy instance if
    # we're making a new event, else retrieve the requested event
    if event_id:
        event = get_object_or_404(Event, id=int(event_id))
    else:
        event = Event()

    # am I processing the form? if so, handle that...
    if request.method == 'POST':
        form = EventForm(request.POST, instance=event)
        if form.is_valid():
            # save the form contents to the database
            event = form.save()

            # done; redirect the user off
            return HttpResponseRedirect('/user/%s/' % request.user.username)
    else:
        form = EventForm(instance=event)

    # done; return the template
    return render_to_response('events.html', RequestContext(request, {
        'form': form,
    }))
...