Отправить какое-то значение в форму, с помощью запроса GET или POST - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно отправить какое-либо значение в форму, используя GET или POST.

Моя форма:

class InstallmentReportForm(forms.ModelForm):
    class Meta:
        model = InstallmentReport
        exclude = ()
    def __init__(self, *args, **kwargs):
        super(InstallmentReportForm, self).__init__(*args, **kwargs)
        self.fields['title'].queryset = Report.objects.filter(grant_name=??????)


InstallmentReportFormSet = inlineformset_factory(Installment,InstallmentReport,
                           form=InstallmentReportForm, fields=['title','spent'],
                                                         extra=1,can_delete=True)

Это моя модель просмотра:

class InstallmentReportCreate(LoginRequiredMixin,PermissionRequiredMixin,CreateView):
    model = Installment
    template_name = 'catalog/installment_report_update.html'
    permission_required = 'catalog.can_change_grant'
    form_class = InstallmentForm
    success_url = None

    def get_context_data(self, **kwargs):
        data = super(InstallmentReportCreate, self).get_context_data(**kwargs)
        if self.request.POST:
            data['titles'] = InstallmentReportFormSet(self.request.POST)
        else:
            data['titles'] = InstallmentReportFormSet()
        return data

    def form_valid(self, form):
        context = self.get_context_data()
        print(titles)
        with transaction.atomic():
            form.instance.owner = self.request.user
            self.object = form.save()
            if titles.is_valid():
                titles.instance = self.object
                titles.save()
        return super(InstallmentReportCreate, self).form_valid(form)

    def get_success_url(self):
        return reverse('grant-installment-owner', args=(self.object.id,))

Мне нужно получить 'grant_name' для фильтрации данных.

Я использую Python3.7.3 и Django 2.2.1

1 Ответ

0 голосов
/ 17 июня 2019

Пусть параметром проходящего запроса является 'grant_name', в init () как

def __init__(self, *args, **kwargs):

    if self.request.method == 'POST';

        grant_name = self.request.POST.get('grant_name')

    else:

        grant_name = self.request.GET.get('grant_name')

    super(InstallmentReportForm, self).__init__(*args, **kwargs)
    self.fields['title'].queryset = Report.objects.filter(grant_name=grant_name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...