0

私がやろうとしているのは、Django フォームを使用して Dog モデルの既存の行を更新することですが、エラーが発生しています。

このエラーが発生しています:

__init__() got multiple values for keyword argument 'user'

Django はここに問題があると考えているため:

form = DogImageForm(request.POST, request.FILES, user=request.user, instance=instance)

私のmodel.pyは

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

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

そして、私のview.pyは次のとおりです。

def dog_image_upload(request):
    if request.user.is_authenticated():
        if request.method == 'POST':

            userprofile = UserProfile.objects.get(user=request.user)
            instance = Dog.objects.get(id=str(request.POST['dogs']))#user=userprofile,

            form = DogImageForm(request.POST, request.FILES, user=request.user, instance=instance)
            if form.is_valid():
                form.save()
                reader = csv.reader(request.FILES['file'])
                return HttpResponseRedirect('/members-dogs/')
        else:
            form = DogImageForm(user=request.user)
        return render_to_response("dog-image-upload.html", {'form': form}, context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect('/')

ここで modelForm を使用して request.user を渡すことに最初は行き詰まりましたmodelForm の request.user にアクセスします

誰かがこれを修正する解決策を持っているなら、私はとても幸せです!

4

1 に答える 1