簡體   English   中英

POST數據不會填充Django表單字段

[英]Django form fields do not get populated by POST data

我有一個帶有自定義構造函數的模型表單。 它檢查是否需要文件,如果為false,則刪除文件字段。 它還有兩個隱藏字段,我在視圖中對其進行了初始化。 表單類如下:

class SubmitTask(forms.ModelForm):
    task = forms.ModelChoiceField(queryset=Task.objects.all(), widget=forms.HiddenInput())
    student = forms.ModelChoiceField(queryset=UserProfile.objects.all(), widget=forms.HiddenInput())    

    def __init__(self, file_required=False, *args, **kwargs):
            super(SubmitTask, self).__init__(*args, **kwargs)
            if file_required is True:
                    file = forms.FileField(
                            label='Select a file',
                            help_text='max: 2.5 MB'
                    )
            else:
                    del self.fields['file']

    class Meta:
            model = Submission
            exclude = ('date_submitted',)

我的問題是在初始化表單時會填充隱藏字段(我已經確認通過查看HTML代碼確實已初始化了其值)。 但是,在POST請求期間不會填充隱藏字段的值。 我已在POST請求期間確認表單確實已綁定,並在Firebug上確認POST也包含taskstudent值。 這是我的views.py涉及的方法

def view_task(request, id):
    task = Task.objects.get(pk=id)
    profile = request.user.get_profile()

    data = {}
    data['classroom'] = task.get_classroom()
    data['description'] = task.get_description()

    teacher_classrooms = Classroom.objects.filter(teacher=profile)
    teacher_tasks = Task.objects.filter(classroom__in=teacher_classrooms)

    if not submission and task not in teacher_tasks:
        form = SubmitTask(file_required=task.file_required, initial={'task':task.pk, 'student':profile.pk})

        data['form'] = form
        if request.method == 'POST':
            form = SubmitTask(request.POST, request.FILES)

            if form.is_valid():
                form.save()

    return render_to_response('classrooms/view_task.html',
        data, context_instance=RequestContext(request))

您的檢視功能對我而言似乎不正確:

提交變量來自哪里,初始化發布的表單時會缺少file_required參數,並且表單處理可能應重新組織為以下形式:

if request.method == 'POST':
    form = SubmitTask(task.file_required, request.POST, request.FILES)
    ...
else:
    form = SubmitTask(task.file_required, ...)

data['form'] = form

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM