2011-06-13 2 views
0

이 내 views.pyDjango에서 폼 유효성 검사/처리를 수행하는 방법은 무엇입니까?

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가 사용되어야한다는 것을 이해합니다. 그러나 이것에 대한 문서가 부족합니다.

+0

될 것입니다 당신이 정말로 당신이 쿼리를 수행하는 방법을 모델에 따라 다릅니다 있다고 생각합니까? –

+0

아니요. – Hick

+0

그런 다음이 질문을 한 이유는 무엇입니까? 데이터베이스에 사용자가 있는지 확인하는 것은 절대 표준 Django 쿼리입니다. –

답변

2

정확하게 이해했다면 데이터베이스에 사용자가 있는지 확인하고 싶습니까?

그렇다면 왜 PermForm (forms.py)의 사용자 필드를 ForeignKey (User)로 설정하지 않았습니까?

그리고 그래,이 방법으로 당신이 할 수있는 사용자를 얻을 :

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

사용자의 기본 키가 user.id

+1

이것은 아마도'except ObjectDoesNotExist :'를 제외한'try :'문 다음에 있어야합니다. [예제 문서] (https://docs.djangoproject.com/en/1.3/ref/models/querysets/#django.db.models.query.QuerySet.get) –

+0

정확히, 바로 당신 – tony

+0

btw 나는 ' 당신이 그것을 암시하려고 시도하거나 그렇지 않다는 것을 알지 못했습니다. 기본적으로 오류 잡기를 시작하기 전에 오래 걸리지 않습니다. 잊지 않고 나중에 문제를 해결해야하는 것보다 처음으로 넣는 것이 더 쉽습니다. –

관련 문제