如何在Django Generic View中访问URL的命名组?

问题描述 投票:0回答:1

给出一个像:url(r'^foos/(?P<foo_id>[0-9]+)/bars/new/$'的网址

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

可能有更好的方法(例如,formsets),但我想尽可能少地改变我现有的流程。

django django-forms django-urls
1个回答
1
投票

您可以覆盖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
© www.soinside.com 2019 - 2024. All rights reserved.