Django: AttributeError: View 对象没有属性 'kwargs'

标签 django formset inline-formset

我正在构建一个 View ,我正在从 url 中传递一个 uuid。但是,当我尝试访问 kwarg 时,我收到一个 "AttributeError: view object has no attribute 'kwargs'" 错误。

在我的模板中,我传递了一个 UUID:

create/97261b96-23b8-4915-8da3-a90b7a0bdc8e/

网址:

re_path(
    r"^create/(?P<uuid>[-\w]+)/$",
    views.DetailCreateView.as_view(),
    name="detail_create"),

View :

class DetailCreateView(SetHeadlineMixin, LoginRequiredMixin, InlineFormSetView):
    inline_model = Detail
    headline = "Create a Detail"
    form_class = DetailForm
    success_message = "Detail Added"
    template_name = "details/detail_create.html"

    def get_object(self, **kwargs):
        return Post.objects.get_subclass(uuid=self.kwargs.get('uuid'))

    def __init__(self, *args, **kwargs):
        super(DetailCreateView, self).__init__(*args, **kwargs)
        self.object = self.get_object()
        self.model = self.object.__class__()

有关正在发生的事情的上下文 -

  • Post 是一个模型,它是一个 InheritanceManager其他模型(产品和变体)继承自。
  • Product 和 Variation 两种模型都有很多字段需要详细说明。
  • 创建详细信息后,我会将其添加到产品对象或变体对象。
  • 为了设置 InlineFormSetView 的模型,我尝试使用 UUID 查询对象并根据我尝试为其创建详细信息的对象的类动态设置它。

问题

为什么我无法访问在 URL 路径中发送的 kwargs?有什么想法吗?

最佳答案

as_view方法 kwargsargs 属性在 __init__ 方法之后分配给 View 。因此,当您在 __init__ 中调用 get_object 时,它会引发错误,因为 self.kwargs 尚未分配。要修复此错误,您可以移动

self.object = self.get_object()
self.model = self.object.__class__()

__init__get_object:

class DetailCreateView(SetHeadlineMixin, LoginRequiredMixin, InlineFormSetView):
    inline_model = Detail
    headline = "Create a Detail"
    form_class = DetailForm
    extra = 10
    success_message = "Detail Added"
    template_name = "details/detail_create.html"

    def get_object(self, **kwargs):
        self.object = Post.objects.get_subclass(uuid=self.kwargs.get('uuid'))
        self.model = self.object.__class__()
        return self.object

    def __init__(self, *args, **kwargs):
        super(DetailCreateView, self).__init__(*args, **kwargs)

关于Django: AttributeError: View 对象没有属性 'kwargs',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51933471/

相关文章:

python - 找不到 Django sqlite 列错误

python - Django:Python变量数据作为背景图片

python - 如何编辑 Django 表单错误消息的 CSS?

python - 如何将自定义字段添加到 InlineFormsets?

javascript - 无法使用formset上传多张图片

DJANGO:如何以形式而不是文字 "model object"呈现模型对象名称?

Django - 自己的应用程序不存在 ContentType

Django 管理内联 - 最少的表单数

Django 的内联表单

django - 如何限制 django admin 内联表单集