我在views.py中有以下内容来生成一个页面,该页面显示用户“资格”的内联表单集
from django.db.models import User
from models import UserQualification
def edit_quals(request):
QualsFormSet = inlineformset_factory(User, UserQualification, fields=('qualification', 'qualification_year', 'qualification_source'))
if request.method == 'POST':
formset = QualsFormSet(request.POST, request.FILES, instance = request.user)
if formset.is_valid():
formset.save()
#send user somewhere
return HttpResponseRedirect(request.user.get_profile_url())
else:
formset = QualsFormSet(instance = request.user)
return render_to_response("edit_quals.html", {
"formset": formset,
}, context_instance=RequestContext(request))
这很好用,但是,我想创建一个formset
仅包含某些“UserQualification”对象(即,仅标记为某种类型的对象),因此当用户访问此页面时,他们仅编辑其资格的子集. 这个参考似乎是我想要的: http: //docs.djangoproject.com/en/1.1/topics/forms/modelforms/#sharing-the-queryset。它处理 modelformset_factory,但是 inlineformset_factory 是基于先验的,所以我认为同样的事情应该可以工作:
formset = QualsFormSet(instance = request.user, queryset=UserQualification.objects.filter(type__startswith='xyz'))
但是进入这个页面只会给出一个 TypeError: init () got an unexpected keyword argument 'queryset'。该参考文献中列出了两种方法,但我都遇到了麻烦。