フォームの開始時にフィールド値を設定しようとしています。フォームの開始時にフォームの値を設定する
ビューを入力すると、このフィールドの値が取得されます。ビューはタイムシートです。その後、ビューの各時間セットについて、それをタイムシートに戻したいと思います。
@login_required
@requires_csrf_token
def timesheet(request, timesheet_id):
timesheet = TimeSheet.objects.get(pk=timesheet_id)
NewTimeFormSet = modelformset_factory(Time, form=TimeForm, formset=RequiredFormSet)
if request.method == 'POST':
newtime_formset = NewTimeFormSet(request.POST, request.FILES)
for form in newtime_formset:
if form.is_valid():
form.save()
#then render template etc
フォームが検証されていることを確認するために、フォームの開始時にこのフィールドを設定します。ビューでPOSTの後にこのフィールドを設定しようとすると、フィールドを設定または取得して検証することができませんでした。
モデルインスタンスが
def __init__(self, *args, **kwargs):
# this allows it to get the timesheet_id
print "initiating a timesheet"
super(TimeSheet, self).__init__(*args, **kwargs)
ビューに入る上で開始され、その後、フォームが生成され、私は、フォームのinitを実行したとき。私のコードはtimesheet_idを取得これは、私はこれは私がこれを行う方法がわからない
NameError: global name 'timesheet_id' is not defined
が...
私も設定しようとしてきたエラーを発生させ
class TimeForm(forms.ModelForm):
class Meta:
model = Time
fields = ['project_id', 'date_worked', 'hours', 'description', 'timesheet_id',]
# some labels and widgets, the timesheet_id has a hidden input
def __init__(self, *args, **kwargs):
print "initiating form"
super(TimeForm, self).__init__(*args, **kwargs)
timesheet = TimeSheet.objects.get(id=timesheet_id)
self.fields['timesheet_id'] = timesheet
しようとしたものですフィールドをclean()メソッドの形式で返しますが、(印刷で表示される)値が入力されても検証されず、フォームセットエラーが発生します。
ヘルプ!