Как я могу получить идентификатор конкретной модели? - PullRequest
1 голос
/ 27 декабря 2011

Я новичок в Джанго. Я только учусь использовать формы и модели. Здесь я использовал модель, чтобы получить два charfields (имя пользователя и пароль) и сохранить их. То, что я хотел сделать, это получить идентификатор модели этого имени пользователя. Ниже приведен код. Но я не могу получить идентификатор.

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)

Еще один вопрос. Какое поле модели для пароля?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 27 декабря 2011
 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)))
0 голосов
/ 16 января 2012

Пожалуйста, не могли бы вы вставить urls.py?

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

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

Должно было быть:

url(r'^people/thanks/(?P<person_id>\d+)$', 'people.views.new'),
0 голосов
/ 12 января 2012

Как насчет изменения вашей функции регистрации на это:

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))

Я предлагаю вам прочитать это: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

0 голосов
/ 27 декабря 2011
user = form.save(commit=False)
user.first_name = u'First name'
user.last_name = u'Last name'
user.save()

Для пароля используйте поле password1

...