Объект запроса отправлен в форму django нормально при отправке через GET, но пустой при отправке через POST - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь отправить запрос пользователя в форму Django, дело в том, что когда я отправляю объект через метод GET, форма Django получает его нормально, но когда я делаю это через метод POST, объект запроса этовсегда пустой, вот код:

*************** Views.py

class CreateRec(BaseView):

    template_name = 'test/rec.html'


    def get(self, request, **kwargs):
        rec_form = RecForm(req_ses = request)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

    def post(self, request, **kwargs):
        user_rec = User.objects.get(username = request)
        profile = profile_models.RecProfile.objects.get(cnxuser = user_rec)
        form = RecForm(request.POST, request.FILES, req_ses = request)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

*********** Фрагмент файла Form.py:

class RecForm(forms.ModelForm):

    def __init__(self, req_ses = None, *args, **kwargs):
        super(RecForm, self).__init__(*args, **kwargs)
        self.req_ses = kwargs.pop('req_ses', None)
        user_rec = User.objects.get(username = req_ses.user)
        profile = profile_models.RecProfile.objects.get(cnxuser = user_rec)

Через GET у req_ses есть объект, через POST он говорит, что req_ses - это Нет ..... любая идея почему ??, я пытался отправитьОбъект user_rec тоже, но получил тот же результат ....

1 Ответ

1 голос
/ 28 сентября 2019

Нет необходимости в аргументе req_ses и всей дополнительной работе, которую вы выполняете, чтобы найти request.user, поскольку HttpRequest объекты имеют атрибут user.

Вот ваш код с некоторыми упрощениями, которые , мы надеемся, исправят проблему:

forms.py:

class RecForm(forms.ModelForm):    
    def __init__(self, *args, user=None, **kwargs):
        instance = profile_models.RecProfile.objects.get(cnxuser=user) 
        super(RecForm, self).__init__(*args, instance=instance, **kwargs)

views.py:

class CreateRec(BaseView):
    template_name = 'test/rec.html' 

    def get(self, request, **kwargs):
        rec_form = RecForm(user=request.user)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

    def post(self, request, **kwargs):
        form = RecForm(request.POST, request.FILES, user=request.user)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

Обновление

class RecForm(forms.ModelForm):    
    def __init__(self, *args, user=None, **kwargs):
        print('args: {}'.format(args))
        print('kwargs: {}'.format(kwargs))
        print('user: {}'.format(user))
        instance = profile_models.RecProfile.objects.get(cnxuser=user) 
        super(RecForm, self).__init__(*args, instance=instance, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...