0
나는 ItemAdmin 내장고 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
오, 아! 그것은 실제로 나쁘다. 사용자가 만든 프로필이 없기 때문에 코드가 손상되었습니다. 그 예외를 잡아서 빈 목록을 반환하는 것이 괜찮습니까? 수정 주셔서 감사합니다 :) – cssndrx
그냥 확인 ... 뒤로 관계 user.profile, 맞 죠? 문서에서 __ 구문을 사용하여 관계가 가능하다는 것을 알았습니다. 그러나 프로필을 만든 다음 필터를 적용하려고 할 때 : 비 전통적인 장고 오류가 발생합니다. "데이터베이스 오류 : 데이터베이스 설치에 문제가 있습니다. 적절한 데이터베이스 테이블이 만들어 졌는지 확인하고 적절한 사용자가 데이터베이스를 읽을 수 있는지 확인하십시오." 이걸 본 사람 있어요? – cssndrx