如何在 Django 通用视图中访问 URL 的命名组?

How can I access a URL's named group in a Django Generic View?

给定一个 url 喜欢:url(r'^foos/(?P<foo_id>[0-9]+)/bars/new/$'

如何从 CreateView 实例中访问 foo_id 以填充外键表单字段?我尝试了多种方法(最近覆盖 get_context_data 并尝试从请求对象或 kwargs 中提取值)但没有成功。

可能有更好的方法来执行此操作(例如表单集),但我想对现有流程进行尽可能少的更改。

您可以覆盖 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