Как я могу получить доступ к именованной группе URL в Django Generic View? - PullRequest
0 голосов
/ 14 марта 2019

Учитывая URL как: url(r'^foos/(?P<foo_id>[0-9]+)/bars/new/$'

Как я могу получить доступ к foo_id из экземпляра CreateView, чтобы заполнить поле формы внешнего ключа? Я попробовал несколько подходов (последний переопределил get_context_data и пытался извлечь значение из объекта запроса или из kwargs) безуспешно.

Возможно, есть лучший способ сделать это (например, formsets), но я хотел бы внести как можно меньше изменений в мой существующий поток.

1 Ответ

1 голос
/ 14 марта 2019

Вы можете переопределить get_form_kwargs или get_initial в зависимости от того, как вы собираетесь передать экземпляр в форму:

class MyView(CreateView):
    def get_form_kwargs(self):
        """Return the keyword arguments for instantiating the form."""
        kwargs = super().get_form_kwargs()
        kwargs['foo'] = Foo.objects.get(id=self.kwargs['foo_id'])
        return kwargs

Или

class MyView(CreateView):
    def get_initial(self):
        """Return the initial data to use for forms on this view."""
        initial = super().get_initial()
        initial['foo'] = Foo.objects.get(id=self.kwargs['foo_id'])
        return initial
...