Django使用具有确定所有者的\u更改\u权限
我想限制其他用户更改对象实例,而不是所有者用户 为此,我正在使用Django使用具有确定所有者的\u更改\u权限,django,python-3.x,django-models,django-forms,django-views,Django,Python 3.x,Django Models,Django Forms,Django Views,我想限制其他用户更改对象实例,而不是所有者用户 为此,我正在使用具有\u更改\u权限管理模型功能,但它不起作用 我的模型: class Book(models.Model): author = models.ForeignKey(User, related_name = 'book_author') ... 在我的admin.py中 class BookAdmin(admin.ModelAdmin): def has_change_permission(self, re
具有\u更改\u权限
管理模型功能,但它不起作用
我的模型:
class Book(models.Model):
author = models.ForeignKey(User, related_name = 'book_author')
...
在我的admin.py中
class BookAdmin(admin.ModelAdmin):
def has_change_permission(self, request, obj):
if request.user.is_super_user():
return True
elif request.user == obj.author:
return True
else:
return False
if obj is None:
return False
在我看来.py
class BookUpdate(generic.UpdateView):
model = Book
form_class = BookUpdateForm
template_name = 'accounts/book_update.html'
def get_object(self, *args, **kwargs):
return Book.objects.get(id=self.kwargs.get('id'))
在我的URL中:
url(r'^update_book/(?P<id>[\w-]+)/$', views.BookUpdate.as_view(),name='update_book')
url(r'^update\u book/(?P[\w-]+)/$),views.BookUpdate.as\u view(),name='update\u book')
现在,当任何人进入这个url模式可以编辑这本书,但我需要的是,只有作者可以编辑这本书
是否具有更改权限
这样做的正确方法,或者其他更好的方法?这只在Django管理界面中有效。看起来您正试图以自定义表单更新书籍
实例。例如,您可以覆盖模型的save()
方法,并在此处检查权限。请参阅文档的第页