如何获取特定模型表单的ID?

1 投票
4 回答
4387 浏览
提问于 2025-04-17 09:05

我刚开始学习Django,正在学习如何使用表单和模型表单。在这里,我用模型表单来获取两个字符字段(用户名和密码),然后保存它。我想做的是获取这个用户名对应的模型ID。下面是我的代码。但是我无法获取到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)

还有一个问题。密码的模型字段应该是什么?

谢谢。

4 个回答

0

你可以把你的注册功能改成这样:

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
user = form.save(commit=False)
user.first_name = u'First name'
user.last_name = u'Last name'
user.save()

请在密码框中输入password1这个字段的内容。

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

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答