rnk
rnk

Reputation: 2204

How can I get the id of the particular modelform?

I am new to Django. I am just learning to use forms and modelforms. Here I used modelforms to get two charfields(username and password) and saving it. What I wanted to do is to get the model id of that username. Below is the code. But I can't get the id.

from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.core.urlresolvers import reverse
from reg.models import registration, registrationform
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext


def registration(request):
        if request.method == 'POST':
            form = registrationform(request.POST)
            if form.is_valid():
                form.save()
            username = form.cleaned_data['username']
            p = registration.objects.all()
            for loop in p:
                if loop.username == username:
                    id = loop.id
            return HttpResponseRedirect(reverse('reg.views.thanks', args=(id)))
    else:
        form = registrationform()
    return render_to_response('registration.html', {'form' : form}, context_instance=RequestContext(request))

def thanks(request, id):
        p = get_object_or_404(registration, pk=id)  
    return render_to_response('thanks.html', {'reg': p)

One more question. What is the model field for password?

Thanks.

Upvotes: 1

Views: 4609

Answers (4)

Amazing Angelo
Amazing Angelo

Reputation: 1728

How about changing your registration function to this:

def registration(request):
    if request.method == 'POST':
        form = registrationform(request.POST)
        if form.is_valid():
            userdetails = form.save()
            user = userdetails.username
            val = registration.objects.get(username = user)
            return HttpResponseRedirect(reverse('reg.views.thanks', args=(val.id)))
    else:
        form = registrationform()
        return render_to_response('registration.html', {'form' : form}, context_instance=RequestContext(request))

I suggest you read this: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

Upvotes: 0

Edward Prendergast
Edward Prendergast

Reputation: 1

Please could you paste your urls.py?

I recently had a problem almost exactly the same as this - it was just a typo there, I had the wrong value in in second field of the url function:

url(r'^people/thanks/(?P<person_id>\d+)$', 'people.views.thanks'),

Should have been:

url(r'^people/thanks/(?P<person_id>\d+)$', 'people.views.new'),

Upvotes: 0

asdf_enel_hak
asdf_enel_hak

Reputation: 7650

 if request.method == 'POST':
            form = registrationform(request.POST)
            if form.is_valid():
                data =form.save()
                #...
                id = data.id
                #...
            return HttpResponseRedirect(reverse('reg.views.thanks', args=(id)))

Upvotes: 2

ssbb
ssbb

Reputation: 2025

user = form.save(commit=False)
user.first_name = u'First name'
user.last_name = u'Last name'
user.save()

For password use password1 field

Upvotes: 0

Related Questions