Как я могу ссылаться на форму при переопределении запроса GET в представлении на основе классов? - PullRequest
1 голос
/ 11 мая 2019

Я переопределил обработчик функции запроса GET в этом представлении на основе классов. В моем операторе else мне нужно передать в качестве данных контекста форму, которую класс создает естественным образом (если я не переопределил функцию GET). Как я могу это сделать?

Я не создал форму в forms.py для создания формы для модели Post. Я позволил представлению создания класса обрабатывать создание формы для меня. Итак, как я могу получить эту форму и передать в качестве данных контекста.

Единственный способ думать об этом - создать представление на основе функций и избегать использования этого представления на основе классов в этих обстоятельствах.

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ["title", "content", "payment_option", "price"]

    def get(self, request):
        card_set = BillingProfile.objects.get(user=request.user).card_set.all()
        if not card_set.exists():
            # The user does NOT have an inserted payment method.
            return redirect("/billing/payment-method?next=/post/new/")
        else:
            # The user DOES have an inserted payment method.
            form = "???"
            return render(request, "posting/post_form.html", {"form":form})

1 Ответ

1 голос
/ 11 мая 2019

Вы можете использовать метод, предоставляемый классом, который является self.get_form().

Но на самом деле это было бы неправильно.Что вам действительно следует сделать, так это делегировать реализацию по умолчанию get и позволить ей делать то, что она обычно делает.

    if not card_set.exists():
        # The user does NOT have an inserted payment method.
        return redirect("/billing/payment-method?next=/post/new/")
    else:
        return super().get(request)
...