0
我試圖從Django Advent的文章中實現Florian的object permissions system,但是我遇到了一個問題,試圖限制返回的查詢集只有用戶有權編輯/查看的項目。弗洛裏安在他的關於包裝管理員的部分中提到它,但跳過它。我看不到過濾查詢集的好方法。我錯過了什麼嗎?如何在使用對象權限時將ModelAdmin查詢集限制爲用戶可編輯的項目?
我試圖從Django Advent的文章中實現Florian的object permissions system,但是我遇到了一個問題,試圖限制返回的查詢集只有用戶有權編輯/查看的項目。弗洛裏安在他的關於包裝管理員的部分中提到它,但跳過它。我看不到過濾查詢集的好方法。我錯過了什麼嗎?如何在使用對象權限時將ModelAdmin查詢集限制爲用戶可編輯的項目?
當你這樣做:
class ObjectPermission(models.Model):
user = models.ForeignKey(User)
can_view = models.BooleanField()
can_change = models.BooleanField()
can_delete = models.BooleanField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
您可以篩選查詢以這種方式設置(在你的方法查詢集):
def queryset(self, request):
qs = super(YourModelAdmin, self).queryset(request)
op = ObjectPermission.objects.filter(user=request.user, can_change=True, content_type=ContentType.objects.get_for_model(YourModel)).values_list('object_id').distinct()
qs = queryset.filter(id__in=[id[0] for id in op])
return qs
那不解決我的問題。我知道如何自定義管理查詢集,但我無法理清用Florian的對象權限實現來完成它的實際查詢語法。 – Brooks 2010-05-25 15:24:24
布魯克斯,對不起,我誤解了這個問題,但我解決了我的答案 – diegueus9 2010-05-26 21:34:35