Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何将项目放入django中的隐藏表单字段?_Python 3.x_Django_Django Views - Fatal编程技术网

Python 3.x 如何将项目放入django中的隐藏表单字段?

Python 3.x 如何将项目放入django中的隐藏表单字段?,python-3.x,django,django-views,Python 3.x,Django,Django Views,我认为我不能做的事对我们很多人来说都是可能的。我有一个表格和一个视图。 我想将forloop中的值作为隐藏字段悄悄地传递到表单中。 def new_issue_book(request,pk): if request.method == 'POST': form = NewIssueForm(request.POST,school= request.user.school,pk=pk) if form.is_valid(): nam

我认为我不能做的事对我们很多人来说都是可能的。我有一个表格和一个视图。 我想将forloop中的值作为隐藏字段悄悄地传递到表单中。

def new_issue_book(request,pk):
    if request.method == 'POST':
        form = NewIssueForm(request.POST,school= request.user.school,pk=pk)
        if form.is_valid():
            name = form.cleaned_data['borrower_id']
            form.save(commit=True)
            books = Books.objects.filter(school = request.user.school).get(id=pk)
            semest = Student.objects.filter(school = request.user.school).get(student_id=name).semester
            departm = Student.objects.filter(school = request.user.school).get(student_id=name).depart
            Books.Claimbook(books)
            return redirect('view_issue')
    else:
        form = NewIssueForm(school= request.user.school,pk=pk)
    return render(request, 'new_issue_book.html', {'form': form})
模型形式

class NewIssueForm(forms.ModelForm):
    def __init__(self,*args, pk,school, **kwargs):
        super(NewIssueForm, self).__init__(*args, **kwargs)

        self.fields['borrower_id'].queryset = Student.objects.filter(school=school)

        self.fields['book_id'] = forms.ModelChoiceField(queryset=Books.objects.filter(id = pk))

    class Meta:
        model = Issue
        fields = ['book_id','borrower_id']
这应该对你有帮助

class NewIssueForm(forms.ModelForm):

    def __init__(self,*args, pk,school, **kwargs):
        super(NewIssueForm, self).__init__(*args, **kwargs)

        self.fields['borrower_id'].queryset = Student.objects.filter(
            school=school)

        self.fields['book_id'].initial = pk #Sets the field with the pk and it's hidden again

    class Meta:
        model = Issue
        fields = ['book_id','borrower_id']
        widgets = {
            'book_id':forms.TextInput(attrs={"'type':'hidden'}),

        }

这就是你要找的吗?Django有
HiddenInput
,没有理由进行
TextInput
并将类型重写为hidden。