gpt4 book ai didi

django - 如何在 CreateView 中获取创建的对象

转载 作者:行者123 更新时间:2023-12-04 17:21:34 29 4
gpt4 key购买 nike

在这里,我使用 CreateView 创建项目,然后我重定向用户以更新当前创建的对象的其他字段。

这是我的代码:

Views.py

class DynamicCreate(CreateView):
model = Dynamic
form_class = DynamicForm
template_name = 'book/dynamic_create.html'

def form_valid(self, form):
book = form.save(commit=False)
book.user = User.objects.get(pk=(self.request.user.pk))
book.save()
return reverse('book:dynamicupdate', args=(self.object.id))


Urls.py

url(r'^book/create/$', views.DynamicCreate.as_view(), name='dynamiccreate'),
url(r'^book/delete/(?P<pk>[\w]+)/$', views.DynamicDelete.as_view(), name='dynamicdelete'),
url(r'^book/update/(?P<pk>[\w]+)/$', views.DynamicUpdate.as_view(), name='dynamicupdate'),

但在这里我收到错误:
Exception Type:     AttributeError
Exception Value: 'NoneType' object has no attribute 'id'

我经历了其他以前问过的问题,如 This ,但我不知道我在这里错过了什么。我的 CreateView 能够在表中创建/保存数据,但无法重定向我以更新 View 页面。

最佳答案

从 ModelFormMixin 继承的 form_valid 方法包括将 self.object 设置为新创建的对象的逻辑,但您的覆盖方法使用 book 变量。如上所述将 args 更改为引用书可以正常工作。

另一种选择是用 self.object 替换 book 变量,如果只是为了遵循默认方法设置的示例。

关于django - 如何在 CreateView 中获取创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37875917/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com