开发者

Editing an Object using a form

Hey everyone i'm new to Django so i'm having problems figuring this out.

I currently have a form that allows a user to save his/her events. I want to also have the user be able to click on the event and edit the event without creating a new event. This is the form i have currently that add events.

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(
            '/us开发者_开发问答er/%s/' % request.user.username
        )
else:
        form = EventForm()
variables = RequestContext(request, {
        'form': form
    })
return render_to_response('events.html', variables)

Can anyone help to make this form so it also allows editing?

Thanks!


This is quite easy if you're using a ModelForm (http://docs.djangoproject.com/en/1.3/topics/forms/modelforms/)

Sample code would look something like this:

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,
    }))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜