【发布时间】:2023-03-16 22:52:01
【问题描述】:
编辑:
对我来说更好的解决方案是使用权限系统,特别是因为我需要其他类型的受控对象访问。我现在使用 Django-guardian 来帮助处理这样的对象级权限。
原文:
我通过让用户上传故事以及让作者、出版商等对标准 django 图书指南进行了一些扩展。我试图只让故事的作者(创作者)使用更新视图,其他用户被重定向离开。
在 UpdateStory 视图中修改 get_object 将其关闭,但由于某种原因回溯通过我的 StoryForm init。错误是'HttpResponseRedirect' object has no attribute '_meta'
views.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
forms.py
class StoryForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(StoryForm,self).__init__(*args, **kwargs)
我还是新手,所以这可能很明显,但我一直在寻找几个小时,我被难住了。
【问题讨论】:
-
我不明白你想要什么。您介意解释一下您的问题到底是什么吗,对我来说,您似乎在使用基于类的视图时遇到了错误,这似乎是因为您没有在里面放入元属性。
-
查看 ragsagar 的回答,了解错误出现的原因。我没有定义 UpdateView 元的任何方面,也不需要。我只是想添加一种方法来验证只有创建对象的用户(其“作者”)才能编辑该对象。
标签: django django-views django-class-based-views