简体   繁体   English

在modelForm中访问request.user

[英]Access request.user in modelForm

If i am using model forms where my views.py looks like: 如果我正在使用我的views.py看起来像的模型表格:

def dog_image_upload(request):
    if request.user.is_authenticated():
        if request.method == 'POST':
            form = DogImageForm(request.POST, request.FILES)
            if form.is_valid():
                form.save()
        else:
            form = DogImageForm(user)
        return render_to_response("dog-image-upload.html", {'form': form}, context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect('/')

And in model.py i want to do this: 在model.py中,我想这样做:

class DogImageForm(ModelForm):
    dogs = forms.ModelChoiceField(queryset=Dog.objects.filter(user=request.user))
    class Meta:
        model = ResultsUpload
        fields = ['dogs','image']

However, i am having trouble trying to send the user to model.py Help on this would be awesome and point worthy! 但是,我在尝试将用户发送到model.py时遇到了麻烦,这方面的帮助非常棒,非常值得!

You would have to do it in the modelform's __init__ 您将必须在模型窗体的__init__

class DogImageForm(ModelForm):
    dogs = forms.ModelChoiceField(queryset=Dog.objects.none())
    class Meta:
        model = ResultsUpload

    def __init__(self, user, *args, **kwargs):
        super(DogImageForm, self).__init__(*args, **kwargs)
        self.fields['dogs'].queryset = Dog.objects.filter(user=user)

and during the initialization of the form, 在表格初始化期间

form = DogImageForm(user=request.user)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM