编辑:
对我来说更好的解决方案是使用权限系统,特别是因为我需要其他类型的受控对象访问。我现在使用 Django-guardian 来帮助处理这样的对象级权限。
原来的:
我通过让用户上传故事以及让作者、出版商等对标准 django 图书指南进行了一些扩展。我试图只让故事的作者(创作者)使用 updateview,而其他用户正在重定向了。
在 UpdateStory 视图中修改 get_object 将其设置为关闭,但由于某种原因回溯通过我的 StoryForm初始化。错误是'HttpResponseRedirect' object has no attribute '_meta'
视图.py
class UpdateStory(LoginRequiredMixin, UpdateView):
model = Story
template_name = 'stories/story_update.html'
form_class = StoryForm
def get_object(self, queryset=None):
obj = super(UpdateStory, self).get_object()
if not obj.author == self.request.user:
return redirect(obj)
return obj
表格.py
class StoryForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(StoryForm,self).__init__(*args, **kwargs)
我还是新手,所以这可能很明显,但我一直在寻找几个小时,我被难住了。