我正在使用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()
)
使用Django REST过滤器的最佳方法是什么?
提前致谢。
答案 0 :(得分:0)
查看ModelViewSet。您可以根据get_queryset
:
request.user
方法进行过滤
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)