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()
方法,并在此处检查权限。请参阅文档的第页