我試圖讓request.user進入ModelForm。我覺得我已經試過這一切排列過載(每Django form, request.post and initial)的Django ModelForms __init__ kwargs創建和更新
__init__
參數來試圖把它作爲(每Django form __init__() got multiple values for keyword argument)一kwargs。我
它看起來像kwargs是最好的方法,但我完全受它困擾。
這裏的的ModelForm:
class DistListForm(ModelForm):
members = ModelMultipleChoiceField(queryset=Company.objects.none())
class Meta:
model = DistList
fields = ['name', 'description', 'members', 'is_private']
def __init__(self, *args, **kwargs):
super(DistListForm, self).__init__(*args, **kwargs)
user = kwargs.pop('user', None)
up = UserProfile.objects.get(user=user)
/.. etc ../
下面是如何創建功能當前工作:
def distlistcreate(request):
user = {'user': request.user}
form = DistListForm(**user)
if request.method == 'POST':
form = DistListForm(request.POST)
if form.is_valid():
distlist = form.save(commit=False)
distlist.creator = request.user
distlist.save()
form.save_m2m()
return HttpResponseRedirect(reverse('distlistsmy'))
return render(request, 'distlistcreate.html',{'form':form})
會拋出一個TypeError:初始化()得到了一個意想不到的關鍵字參數 '用戶'。更新方法同樣無益:
def distlistupdate(request, object_id):
distlist = get_object_or_404(DistList, id=object_id)
form = DistListForm(user=request.user, instance=distlist)
if request.method == 'POST':
form = DistListForm(request.POST, user=request.user)
它也會引發同樣的錯誤。
我一直撞着我的頭靠在這堵牆上兩個小時了。將關鍵字參數傳遞到ModelForm的正確方法是什麼?
這是Django 1.6.1,如果這有所作爲。
的默認參數你之前,你傳遞kwargs的超級__init__需要從kwargs「啪」的用戶 –
ARRRRGGGGHHHHH !!!!! $#HDFA $#@#H#$$!$ HF 非常感謝。 – ghiotion