2016-10-12 8 views
3

python manage.py runserverコマンドの実行中にランタイムサーバエラーが発生しました。ターミナルは、エラーを示している。 ライン35、CustomertaskFormで、STARTDATE = forms.DateInput(ウィジェット= forms.DateField())はTypeError:のinitは()予期しないキーワード引数 'ウィジェット'TypeError:__init __()予期しないキーワード引数 'widget'が発生しました

forms.py

を得ました
class CustomertaskForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(CustomertaskForm, self).__init__(*args, **kwargs) 

    title=forms.CharField(widget=forms.TextInput(attrs={'class':'form-control', 'required': 'required'})) 
    discription=forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'required': 'required'})) 
    startdate=forms.DateInput(widget=forms.DateField()) 
    enddate=forms.DateInput(widget=forms.DateField()) 

    class Meta: 
     model=Customertask 
     fields=['title','discription','startdate','enddate'] 

models.py

class Customertask(models.Model): 
    title=models.CharField(max_length=200) 
    discription=models.CharField(max_length=500) 
    startdate=models.DateTimeField() 
    enddate=models.DateTimeField() 

view.py

def createtasks(request): 
if request.method == 'POST': 
    form=CustomertaskForm(request.POST) 
    if form.is_valid(): 
     tasksave=Customertask.objects.create(
      customer=models.ForeignKey(Customer) 
      title=form.cleaned_data['title'], 
      discription = form.cleaned_data['discription'], 
      startdate=form.cleaned_data['startdate'], 
      enddate=form.cleaned_data['enddate'] 
     ) 
     tasksave.save() 
     return HttpResponseRedirect('/customer/tasktable') 
else: 
    form=CustomertaskForm() 
return render(request, 'customer/createtasks.html', {'form': form}) 

それは、マイグレーションするのが重要ですmodels.pyまたはforms.pyの変更のたびに...マイグレーションについての明確なコメントをお願いします。

+0

は、*全体*トレースバックを投稿してください。 – Alasdair

答えて

0

Try this in your form.

Forms.py

 widgets = { 
     'Title': forms.TextInput(attrs={'class': 'form-control','required':'required'}), 
     'Description': forms.TextInput(attrs={'class': 'form-control','required':'required'}), 
     'StartDate': forms.DateInput(attrs={'class': 'form-control', 'type': 'date','required':'required'}), 
     'EndDate': forms.DateInput(attrs={'class': 'form-control', 'type': 'date','required':'required'}), 
     } 
3

ウィジェットとフィールドが間違った方向にあります。DateFieldはフィールドで、DateInputはウィジェットです。したがって、あなたのフォームはforms.DateField(widget=forms.DateInput())です。 DateFieldがデフォルトでDateInputを使用していますので、あなたは完全にウィジェット引数をドロップすることができますよう

class CustomertaskForm(forms.ModelForm): 
    ... 
    startdate=forms.DateField() 
    enddate=forms.DateField() 

をさておき、あなたはモデルのフォームを保存することで、タスクを作成することができます。手動でCustomertask.objects.create()を呼び出す必要はありません:あなたはスタックオーバーフローの質問をしたときに

if form.is_valid(): 
    tasksave=form.save() 
    return HttpResponseRedirect('/customer/tasktable') 
関連する問題