@alp-rostov

Как использовать kwargs в queryset в дженерике CreateView?

стоит задача вывести дополнительную инфу из БД в шаблоне дженерика CreateView.
class InvoiceCreate(CreateView):
    model = Invoice
    template_name = 'invoice.html'
    context_object_name = 'invoice'
    form_class = InvoiceForm
    queryset = OrderList.objects.get(pk=self.kwargs.get('order_pk'))

При описании view не могу в queryset использовать kwargs, пишет ошибку. При использовании метода get_context_data или get_queryset, все нормально. как использовать kwargs при описании view?

Изначально сделал так, все работает, но как-то коряво.
class InvoiceCreate(CreateView):
    model = Invoice
    template_name = 'invoice.html'
    context_object_name = 'invoice'
    form_class = InvoiceForm
 
    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        context['info'] = OrderList.objects.get(pk=self.kwargs.get('order_pk'))
        return context

    def form_valid(self, form, **kwargs):
        invoice = form.save(commit=False)
        b=self.get_context_data(**kwargs).get('info')
        invoice.order_id = b
        invoice.save()
        return redirect(f'/list_order/{self.kwargs.get("order_pk")}')


Переменную context['info'] и в шаблоне использую
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ответы на вопрос 1
Mi11er
@Mi11er
A human...
Абсолютно нормально =)
def get_context_data(self, **kwargs):
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы