2016-10-18 4 views
0

사용자가 연관에 가입하고 이벤트를 수신 할 수있는 연관 스케줄 시스템을 구현하기 위해 장고 REST 프레임 워크를 사용하고 있습니다. 각 협회는 여러 그룹을 가질 수 있습니다 (귀하가 협회에 가입 할 때 귀하를 선택할 때). 따라서 각 그룹마다 이벤트가 동일하지만 장소와 날짜가 다를 수 있습니다.Django REST Framework : 다른 테이블로 필터링

모델은 다음과 같습니다

class Association(models.Model): 
    name = models.CharField(max_length=40, blank=False, unique=True) 
    description = models.CharField(max_length=500, blank=False) 

class AssocMember(models.Model): 
    class Meta: 
     unique_together = (("user", "assoc"),) 

    user = models.ForeignKey('user.User') 
    assoc = models.ForeignKey('associations.Association') 
    is_admin = models.BooleanField(default=False) 
    group = models.SmallIntegerField(default=-1) 

class Event(models.Model): 
    name = models.CharField(max_length=40, blank=False) 
    date = models.DateTimeField(blank=False) 
    assoc = models.ForeignKey('associations.Association') 
    group = models.IntegerField(blank=True, default=-1) 

나는 그것의 그룹에 해당하는 연결된 사용자의 모든 이벤트를 반환 내 API에 get_queryset()을 구현해야합니다. 그러나 그 동안 필터링하는 동안 각 이벤트에 대해 AssocMember에 액세스하고 사용자 정의 조건을 생성해야합니다 (예 : Python의 .filter())

장고 REST 필터를 사용하는 가장 좋은 방법은 무엇입니까?

미리 감사드립니다.

답변

0

ModelViewSet을 확인하십시오. 넌 request.user에 기초하여 필터링 get_queryset 메소드를 재정의 할 수

class EventViewSet(viewsets.ModelViewSet): 
    def get_queryset(self): 
     group = self.request.user.group # Your models might need adjusting to do this 
     return Event.objects.filter(group__in=group) 
+0

문제 이벤트가 연관에 관련되기 때문에, 변수 "기"는 각각의 이벤트에 의존하고, 사용자들의 그룹이에 의존한다는 것이다 협회). 나는 queryset을 목록으로 바꾸고 python 필터 함수를 사용하여 해결책을 찾았지만 추한 것처럼 보입니다 (목록을 queryset으로 다시 변환 할 수는 없습니다) – artix41

관련 문제