检查用户发送请求是否在不同的模型中

Check if User sending request is in different model

我正在尝试使用 REST Framework 创建 API。我运行陷入了一点问题。我希望能够通过向 API 发送请求来获取特定用户的事件列表。是否有可能在请求事件列表时检查发送请求的用户是否在事件所属的团队中?

class Teams(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField(max_length=1000, blank=True)
    Users = models.ManyToManyField(User, blank=True)

class Event(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    eventTime = models.DateTimeField()
    title = models.CharField(max_length=100, default='')
    description = models.TextField(max_length=1000, blank=True)
    group = models.ForeignKey(Teams, on_delete=models.CASCADE)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

这些是我目前实现的模型之间的关系

您可以通过覆盖 .get_queryset() 来做到这一点。这应该可以解决问题:

class EventList(generics.ListAPIView):

    def get_queryset(self):
        # 
        return Event.objects.filter(group__users=self.request.user)

查询 many-to-many 个字段(在我看来)不是很直观。

Event.objects.filter(group__users=self.request.user) 基本上意味着“获取包含当前用户的 group/team 的所有事件”。