Tôi đang sử dụng django-guardian để quản lý quyền đối với mỗi đối tượng.Đối tượng có quyền được chỉ định bởi django-guardian không hiển thị trong quản trị
Đối với một người dùng nào đó Tôi cho phép tất cả các phép trên một đối tượng:
joe = User.objects.get(username="joe")
mytask = Task.objects.get(pk=1)
assign('add_task', joe, mytask)
assign('change_task', joe, mytask)
assign('delete_task', joe, mytask)
và tôi nhận được, như mong đợi:
In [57]: joe.has_perm("add_task", mytask)
Out[57]: True
In [58]: joe.has_perm("change_task", mytask)
Out[58]: True
In [59]: joe.has_perm("delete_task", mytask)
Out[59]: True
Trong admin.py tôi cũng làm cho TaskAdmin kế thừa từ GuardedModelAdmin
thay của admin.ModelAdmin
Bây giờ khi tôi kết nối với trang web của mình với joe, trên quản trị viên tôi nhận được:
You don't have permission to edit anything
Tôi không được phép chỉnh sửa đối tượng mytask?
Tôi có phải đặt một số quyền bằng cách sử dụng hệ thống cấp phép dựa trên mô hình tích hợp không?
Tôi có thiếu gì không?
EDIT
Tôi cố gắng để thêm tùy chọn user_can_access_owned_objects_only
, mà là vụ để đối phó với vấn đề của tôi, nhưng tôi vẫn không thể nhìn thấy bất cứ điều gì trong quản trị của tôi ...
class TaskAdmin(GuardedModelAdmin):
user_can_access_owned_objects_only = True
pass
admin.site.register(Task, TaskAdmin)
Thank bạn
Bạn nên vượt qua 'yêu cầu' và không 'request.user' trong self.has_view_permission – Don
@Don Yep, nhờ chỉ ra rằng =) – okm
Có thể được versioning thay đổi liên quan đến vấn đề, nhưng chạy vào Đối tượng 'Tùy chọn' không có thuộc tính 'get_change_permission' – Mutant