2015-06-24 39 views
1

我遇到了Django表單的問題。我找不到這個錯誤,以及我如何修復它。我的Django表單無效

models.py

from django.db import models 
from django.utils import timezone 
from django.utils.translation import ugettext_lazy as _ 
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, 
BaseUserManager 
from django.core.validators import RegexValidator 
from django import forms 

class Person(models.Model): 
person_userid=models.ForeignKey(User) 
person_availability_choices=(
    ('M', 'Monday'), 
    ('T', 'Tuesday'), 
    ('W', 'Wednesday'), 
    ('Th', 'Thursday'), 
    ('F', 'Friday'), 
    ('Sat', 'Saturday'), 
    ('Sun', 'Sunday'), 
) 
person_availability=models.CharField(max_length=9, choices=person_availability_choices) 
person_salutation_choices=(
    ('Mr.', 'Mr.'), 
    ('Mrs.', 'Mrs.'), 
    ('Ms.', 'Ms.'), 
    ('Dr.', 'Dr.'), 
) 
person_salutation=models.CharField(max_length=4, choices=person_salutation_choices) 
person_first_name=models.CharField(max_length=50) 
person_middle_name=models.CharField(max_length=50) 
person_last_name=models.CharField(max_length=50) 
person_date_of_birth=models.DateField(null=True, blank=True) 
person_address_street=models.CharField(max_length=50) 
person_address_suite=models.IntegerField(max_length=10) 
person_address_city=models.CharField(max_length=50) 
person_address_state=models.CharField(max_length=2) 
person_address_zip=models.IntegerField(max_length=10) 
person_address_county=models.CharField(max_length=25) 
person_live_within_bloom=models.CharField(max_length=1, choices=yes_no) 
person_home_phone=models.IntegerField(max_length=10) 
person_cell_phone=models.IntegerField(max_length=10) 
person_work_phone=models.IntegerField(max_length=10) 
person_email=models.CharField(max_length=50) 
person_second_email=models.CharField(max_length=50) 
person_communication_preference_choices=(
    ('Phone','Phone'), 
    ('Email', 'Email'), 
    ('Text', 'Text'), 
) 
person_communication_preference=models.CharField(max_length=10, choices=person_communication_preference_choices) 
person_dob=models.DateField() 
person_entered_in_donor_database=models.CharField(max_length=1, choices=yes_no) 
person_community_member=models.CharField(max_length=1, choices=yes_no) 
person_participation_start_date=models.DateField() 
person_participation_end_date=models.DateField() 
person_reason_for_leaving_choices=(
    ('Moving', 'Moving'), 
    ('Financial', 'Financial'), 
    ('Medical', 'Medical'), 
    ('Graduated', 'Graduated'), 
    ('CSH', 'Completed Service Hours'), 
    ('Other', 'Other'), 
) 
person_reason_for_leaving=models.CharField(max_length=20, choices=person_reason_for_leaving_choices) 
person_note=models.TextField(max_length=500) 

class Volunteer(Person): 
volunteer_types=(
    ('Program', 'Program'), 
    ('Admin', 'Admin'), 
    ('Committee', 'Committee'), 
) 
person_volunteer_type=models.CharField(max_length=10, choices=volunteer_types) 

volunteer_allergies=models.CharField(max_length=100) 
volunteer_medications=models.CharField(max_length=100) 
volunteer_health_notes=models.CharField(max_length=100) 
volunteer_high_school_grad_date=models.DateField(null=True, blank=True) # replace null = True.... with name as done for date_of_birth 
volunteer_college_name=models.CharField(max_length=50) 
volunteer_college_grad_date=models.DateField(null=True, blank=True) 
volunteer_orientation_date=models.DateField(null=True, blank=True) 
leader_training1_start_date=models.DateField(null=True, blank=True) 
leader_training1_end_date=models.DateField(null=True, blank=True) 
leader_training2_start_date=models.DateField(null=True, blank=True) 
leader_training2_end_date=models.DateField(null=True, blank=True) 
stable_manager_training_start_date=models.DateField(null=True, blank=True) 
stable_manager_training_end_date=models.DateField(null=True, blank=True) 
volunteer_community_member=models.CharField(max_length=1, choices=yes_no) 
volunteer_board_member=models.CharField(max_length=1, choices=yes_no) 
volunteer_board_member_start_date=models.DateField(null=True, blank=True) 
volunteer_board_member_end_date=models.DateField(null=True, blank=True) 
volunteer_horse_experience=models.CharField(max_length=1, choices=yes_no) 
volunteer_horse_experience_details=models.CharField(max_length=100) 
volunteer_experience_with_disabilities=models.CharField(max_length=1, choices=yes_no) 
volunteer_experience_with_disabilities_details=models.CharField(max_length=100) 
volunteer_computer_skills_details=models.CharField(max_length=100) 
volunteer_facility_maintenance_experience_details=models.CharField(max_length=100) 
volunteer_construction=models.CharField(max_length=1, choices=yes_no) 
volunteer_lift_fifty_lbs=models.CharField(max_length=1, choices=yes_no) 
volunteer_language_proficiency=models.CharField(max_length=50) 
volunteer_CPR_trained=models.CharField(max_length=1, choices=yes_no) 
volunteer_landscaping=models.CharField(max_length=1, choices=yes_no) 
volunteer_skill_fundraising=models.CharField(max_length=1, choices=yes_no) 
volunteer_skill_PR=models.CharField(max_length=1, choices=yes_no) 
volunteer_skills_other=models.CharField(max_length=500) 
volunteer_of_month_recognition=models.DateField(null=True, blank=True) 
volunteer_of_year_recognition=models.DateField(null=True, blank=True) 
#volunteer_personid=models.ForeignKey(Person) 

views.py

def volunteer_form(request): 
    if request.method == 'POST': 
     form = VolunteerForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponse('<script language="JavaScript"> alert("You have sucessful created a new Volunteer"); location.href="http://127.0.0.1:8000/login/volunteer_form/" </script>') 
      #return HttpResponseRedirect('/') 

    else: 
     detail_id = request.GET['id'] 
     query_results = User.objects.filter(id = detail_id) 
     form = VolunteerForm() 
     return render(request, 'loginPortal/volunteer_form.html', {'form' : form, 'query_results' : query_results}) 

forms.py

from django.db import models 
from django.forms import ModelForm 
from loginPortal.models import Volunteer, Client 

class VolunteerForm(ModelForm): 
    class Meta: 
     model = Volunteer 

class ClientForm(ModelForm): 
    class Meta: 
     model = Client 

所以我理解的形式沒有驗證錯誤。我找不到這個錯誤。如果任何人能幫助我,我會很高興

回答

1

它的forms.py,如果引用:

model = Client 

...做上述進口後。您在models.py中沒有稱爲「客戶端」的模型,您有一個名爲「Person」的模型。

+0

不,對不起,但我確實有模型客戶端,但我沒有發佈我的所有模型文件。表格和模特的客戶與志願者很相似,但我現在對此無能爲力,問題出在我的志願者身上,程序一直說這個表格是無效的。 –

+0

您準確接收的錯誤是什麼? – FlipperPA

+0

正確的錯誤是我沒有HttpResponse,但它顯示是因爲它不傳遞「is_valid」測試。我不知道如何解決它。 –

1

視圖的最後一部分應該是這樣的:

else: 
    form = VolunteerForm() 
detail_id = request.GET['id'] 
query_results = User.objects.filter(id = detail_id) 
return render(request, 'loginPortal/volunteer_form.html', {'form' : form, 'query_results' : query_results}) 

只有form定義應該是裏面else,所有剩下的應該是塊之外。

+0

我明白了你的觀點,然而,這裏不是問題,我用它來加載一個帶有前一個數據的空表單,並且當我第一次加載表單時,我沒有任何問題問題。我的問題只發生在我試圖保存數據時。我沒有任何問題來加載表單。 –

+0

由於表單無效,並且您的代碼在該情況下不會返回響應。這段代碼修復了這個問題,所以你將錯誤顯示給用戶。 –

+0

不起作用。因爲我的表單不通過「GET ID」。 –