【发布时间】:2016-10-18 22:59:45
【问题描述】:
这里我使用 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 能够在表中创建/保存数据,但它无法重定向我以更新视图页面。
【问题讨论】:
-
对象不就是
book吗? -
是的,这本书是我的对象
-
那么,你的问题是什么?
-
return reverse('book:dynamicupdate', args=(self.object.id))这一行给了我错误。之后我正在创建对象,我试图让它的 ID/PK 重定向到更新该对象......但 self.object.id 没有价值......它返回我没有,有没有其他方法来获取创建的对象身份证? -
但是我们刚刚同意你的对象是
book。那你为什么在那里使用self.object?
标签: django django-admin django-views