Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django rest framework rest框架的过滤器相关模型_Django Rest Framework_Django Serializer_Django Rest Viewsets - Fatal编程技术网

Django rest framework rest框架的过滤器相关模型

Django rest framework rest框架的过滤器相关模型,django-rest-framework,django-serializer,django-rest-viewsets,Django Rest Framework,Django Serializer,Django Rest Viewsets,我有三张桌子。用户、组和组邀请。我希望用户只能邀请其他用户加入他们自己所在的组。 我在ViewSet中所做的过滤仅用于GET。它不会过滤掉用户所属的组 我的模型(简化以减少冗长): 序列化程序: class InviteSerializer(ModelSerializer): user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all()) group = serializers.PrimaryKeyRelate

我有三张桌子。用户、组和组邀请。我希望用户只能邀请其他用户加入他们自己所在的组。 我在ViewSet中所做的过滤仅用于GET。它不会过滤掉用户所属的组

我的模型(简化以减少冗长):

序列化程序:

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 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', 'user', 'group')
我不工作。即使我设置了
qs=Group.objects.all()
也不会给出任何结果

我读到有人说应该在视图中进行过滤。但是我不知道,也找不到关于这个的任何东西

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', 'user', 'group')