如何在Django中进行表单验证/处理?

0 投票
1 回答
525 浏览
提问于 2025-04-16 19:27

这是我的 views.py 文件

from django.conf import settings
from django.shortcuts import render_to_response
from django.template import RequestContext, loader
from django import forms
from django.core import validators
from django.contrib.auth.models import User
from django.utils import simplejson

def PermLayer(request):
    users = User.objects.all()
    if request.method == 'POST': 
            form = PermForm(request.POST) 
            if form.is_valid():
            user = form.cleaned_data['user']
                    rad1=form.cleaned_data['radio1']
                            rad2=form.cleaned_data['radio2']
                perm = Permission()
            perm.user = user
            perm.table = ContentType.objects.get_for_model(TableToAddPermissionFor)
            perm.permi = rad1 + rad2 
            perm.save()
            return render_to_response('permission.html',{'user':users})
        else:
            form = PermForm()



        return render_to_response('permission.html', {'user':users})

这是我的 forms.py 文件

from django import forms
from django.forms.widgets import RadioSelect

class PermForm(forms.Form):
    user = forms.CharField(max_length=100)
    RADIO_CHOICES1 = [['1','Radio 1'],['2','Radio 2']]
    RADIO_CHOICES2 = [['3','Radio 2'],['4','Radio 2']]
    radio = forms.ChoiceField( widget=RadioSelect(), choices=RADIO_CHOICES1)
    radio = forms.ChoiceField( widget=RadioSelect(), choices=RADIO_CHOICES2)

我想知道怎么验证表单,也就是说,我想检查用户是否在数据库里,并获取他们的主键。我知道需要用到 django.db 中的 Q,但这方面的文档有点缺乏。

1 个回答

2

如果我理解得没错,你是想检查用户是否在数据库里存在吧?

那你为什么不在PermForm(forms.py文件)里把用户字段设置为ForeignKey(User)呢?

另外,你可以通过下面的方式来获取用户:

user = User.objects.get(username=form.cleaned_data['user'])

用户的主键就是 user.id

撰写回答