2017-08-11 11 views
0

フォームを送信しようとしたときに__init__() got multiple values for keyword argument 'school'エラーが表示されます。議論では何かがありますが、私はそれを釘付けにすることはできません。フォームのDjango位置/キーワード引数の問題

ビュー:

if "AddCourse" in request.POST: #"AddCourse" is the name of the submit button in the template 
     f = CourseAddForm(request.POST, prefix='crs')#, school=this_school) #use Instance to edit previous stuff 
     g = SectionAddwCourseForm(request.POST, prefix='sctn', school=this_school) 
     if f.is_valid() and g.is_valid(): 
      new_course = f.save() 
      new_section = g.save(commit=False) 
      new_section.course = new_course 
      new_section.save() 
      g.save_m2m() 
      s=Scollection.objects.create(Name="All Standards",Active=True,course=new_course) 
     else: 
      print 'invalid' 

形式:

class SectionAddwCourseForm(forms.ModelForm): 
    class Meta: 
     model = Section 
     fields = ['Name','teacher'] 
     labels = { 
     "Name":"Section Name", 
     } 
    def __init__(self, school, *args, **kwargs): 
     super(SectionAddwCourseForm, self).__init__(*args, **kwargs) 
     print school 
     try: 
      #self.fields['standards'].queryset = self.instance.standards.all() #works to get current ass't stds 
      self.fields['teacher'].queryset = Teacher.objects.filter(school=school).order_by('LastName') 
     except: 
      print "except teacher list for this school" 
      pass 

答えて

1

あなたは

SectionAddwCourseForm(request.POST, prefix='sctn', school=this_school) 

を呼び出すときrequest.POSTはそう、selfSectionAddwCourseForm.__init__の最初のパラメータに対応しますので、それはですschool。そして、キーワードschoolを持つ別のパラメータを渡すので、そのために複数の値があります。 パラメータの順序は非常に重要です!

+0

その問題の解決策は何ですか? – DeltaG

+1

まあ、それはあなたの期待している順序であなたのパラメータを置くことです。そう最初に学校。 'request.POST'の前に –

+0

?それはどちらもうまくいかない。 – DeltaG