表单集合对象 - 对象没有'fields'属性
出现了一个错误,提示“AddVideoFormFormSet”对象没有“fields”这个属性。这里的Blogpost是指向Video的外键。我需要让用户能够将视频添加到他们的博客文章中,但现在这个表单组却允许用户将视频添加到任何博客文章里。有没有什么想法?
views.py
@login_required
def addvideo(request):
user = request.user
theform = AddVideoForm
UploadFormSet = formset_factory(theform, extra=1)
if request.method == "POST":
formset = UploadFormSet(request.POST)
if formset.is_valid() :
for form in formset.cleaned_data:
video = form['video']
title = form['title']
blogpost = form['blogpost']
description = form['description']
video = Video(
title = title,
video= video,
blogpost=blogpost,
description=description
)
video.user = request.user
video.save()
return HttpResponseRedirect("/%s/%s/" % (user, blogpost.slug))
else:
formset = UploadFormSet()
formset.fields['blogpost'].queryset = Blogpost.objects.filter(user=user)
return render_to_response('video/add_video.html', dict(formset=formset), context_instance=RequestContext(request))
forms.py
from django import forms
from main.models import Blogpost
from .models import *
class AddVideoForm(forms.ModelForm):
class Meta:
model = Video
fields = ['title', 'blogpost', 'video', 'description']
1 个回答
6
一个表单集合(FormSet)包含了多个表单。你可以尝试把:
formset.fields['blogpost'].queryset = Blogpost.objects.filter(user=user)
改成:
for form in formset:
form.fields['blogpost'].queryset = Blogpost.objects.filter(user=user)
这样就应该可以了。