如何解决为rest框架过滤相关模型
我有三张桌子。用户、组和组邀请。我希望用户只能邀请其他用户加入他们自己所在的组。 我在 ViewSet 中所做的过滤仅适用于 GET。它不会过滤掉用户所属的组。
我的模型(简单化以使其不那么冗长):
> generateUuid();
'143c8862-c212-ccf1-e74e-7c9afa78d871'
> generateUuid();
'4d02d4d6-4c0d-ea6b-849a-208b60bfb62e'
序列化器:
class User(models.Model):
name = models.CharField()
group = models.ManyToManyField(Group)
class Group(models.Model):
name = models.CharField()
class GroupInvite(models.Model):
user = models.ForeignKey(User)
group = models.ForeignKey(Group)
查看:
class InviteSerializer(ModelSerializer):
user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
group = serializers.PrimaryKeyRelatedField(queryset=Group.objects.all())
class Meta:
model = GroupInvite
fields = ('id','user','group')
我试图用这个修改序列化器:
class InviteViewSet(ModelViewSet):
queryset = GroupInvite.objects.all()
serializer_class = InviteSerializer
def get_queryset(self):
return self.queryset.all()
我不工作。即使我设置了 class InviteSerializer(ModelSerializer):
group = SerializerMethodField()
def get_group(self):
qs = Group.objects.filter(id__in=self.request.user.group.all())
serialize = GroupSerializer(instance=qs)
return serialize.data
class Meta:
model = GroupInvite
fields = ('id','group')
也不会给出任何结果。
我读到有人说过滤应该在视图中完成。但我不知道,也找不到任何相关信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。