我在Django中有一个自定义的UpdateView,它应该管理给定对象的更新过程。我当前使用的是slug(对象的标识符,而不是pk),因此我用url模式中给定的slug名称定义字段“slug_field='cluster_id'”:
**views.py**
class LeopUpdateView(edit_views.UpdateView):
model = leop_models.Cluster
slug_field = 'cluster_id'
form_class = leop_forms.LeopForm
template_name = 'staff/leop_update.html'
success_url = django_resolvers.reverse_lazy('leop_management')
def get_object(self, queryset=None):
print '>>> self.request.GET = ' + misc.dict_2_string(
self.request.GET.dict()
)
print '>>> self.request.POST = ' + misc.dict_2_string(
self.request.POST.dict()
)
print '>>> cluster_id = ' + str(self.request.GET.get('cluster_id'))
print '>>> user = ' + str(self.request.user)
print '>>> '
return self.model.objects.get(
identifier=self.request.GET.get('cluster_id')
)
**urls.py**
urlpatterns = urls.patterns(
'',
urls.url(
r'^update/(?P<cluster_id>\w+)/$',
decorators.login_required(leop_views.LeopUpdateView.as_view()),
name='leop_update'
),
)
但是,当我在视图中重写的“get_object”方法收到请求时请求.GET以及请求.POST对象是空的,slug没有设置;但是,用户名是在请求中设置的(以下是我在控制台中得到的输出):
^{pr2}$由urlpattern生成并匹配的URL是:“/leop/update/elana/”
我做错什么了?我应该用另一种方式进入弹头区吗?在
在请求.GET包含querystring参数(?key=value&key1=value1)和请求.POSTcformontains发布数据(通常为表单)
我想错在这一行
应该是
^{pr2}$slug_field
应包含要用作搜索的模型字段的名称(根据url的字符)。在另外,您不需要重写
get_object
相关问题 更多 >
编程相关推荐