0
我試圖通過內ItemAdmin覆蓋django ManyToManyField的Queryset過濾器?
def queryset(self, request):
限制的結果。
我想僅顯示通過用戶配置文件被授予了request.user的類別訪問權限的項目。
class Profile(models.Model):
user = models.ForeignKey(auth.User, unique=True)
categoryAccess = models.ManyToManyField(Category ...)
class Item(models.Model):
category = models.ForeignKey(Category ...)
我不能完全得到語法正確的....我試圖像
class ItemAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(ItemAdmin, self).queryset(request)
return qs.filter(category__in=request.user.objects__profile__categoryAccess)
任何想法的東西呢?非常感謝!
嘿丹尼爾!非常感謝...我將該字段更改爲OneToOne,但我得到'配置文件匹配查詢不存在'。 – cssndrx 2012-03-15 02:54:52
哦,哎呀!實際上這是我的不好。代碼打破了,因爲用戶在創建時沒有配置文件。只是捕獲該異常並返回空列表是否正確?感謝修復:) – cssndrx 2012-03-15 03:01:46
只是爲了確認...向後關係user.profile將工作,對吧?我在文檔中看到,與__語法可能存在後向關係。但是,當我創建一個配置文件,然後嘗試過濾:我得到一個非傳統的Django錯誤。它說:「數據庫錯誤:數據庫安裝有問題,確保已經創建了適當的數據庫表,並確保數據庫可以被適當的用戶讀取。」有沒有人見過這個? – cssndrx 2012-03-15 15:44:38