2015-09-18 42 views
1

我有一個表單輸入用戶ID,我想比較這個ID與數據庫值(usrId)。如何將表單輸入與Django中的數據庫值進行比較?

forms.py

from django import forms 
from .models import UserInfo 

class NameForm(forms.Form): 
    your_id = forms.CharField(label='Your id', max_length=100) 
    def clean(self): 
    cleaned_data = super(NameForm, self).clean() 
    your_id = cleaned_data.get("your_id") 
    p = UserInfo.objects.all() 
    if your_id: 
     for i in p: 
      if i.usrId not in your_id: 
       raise forms.ValidationError(
        "User not exist." 
       ) 

當我做什麼也沒發生,我得到User not exist.任何價值。

models.py

class UserInfo(models.Model): 
    name = models.CharField(max_length=200) 
    usrId = models.CharField(max_length=200) 
    age = models.CharField(max_length=200) 
    poste = models.CharField(max_length=200) 
    date1 = models.DateTimeField('date of recruitment') 
    def __str__(self):    # __unicode__ on Python 2 
     return self.name 

views.py

# if this is a POST request we need to process the form data 
if request.method == 'POST': 
    # create a form instance and populate it with data from the request: 
    form = NameForm(request.POST) 
    # check whether it's valid: 
    if form.is_valid(): 
     # process the data in form.cleaned_data as required 

     # ... 
     # redirect to a new URL: 
     return generate_pdf(request, Type_id) 

# if a GET (or any other method) we'll create a blank form 
else: 
     form = NameForm() 

return render(request, 'rh/detail.html', {'form': form, 'type_id': Type_id}) 

回答

2

假設你正在試圖匹配確實存在的用戶ID(即登錄ID和查詢數據庫手動確保)。您的代碼應作如下修改:

try: 
    p = UserInfo.objects.get(id=your_id) 
except UserInfo.DoesNotExist: 
    raise forms.ValidationError("User not exist.") 

此代碼是更短,更高效(你是不是獲取所有用戶對象爲在目前的版本)

+1

我發現你的答案很有用,謝謝 –

+0

高興有幫助。 – e4c5

相關問題