擅长:python、mysql、java
<p>你能试试这个吗。这不会在queryset中添加is_成员,但我认为您正在寻找类似的内容</p>
<pre><code># Serializer
class RoomSerializer(serializers.ModelSerializer):
is_member = serializers.SerializerMethodField(read_only=True)
class Meta:
model = Room
fields = "__all__"
def get_is_member(self, obj):
user = self.context["request"].user
if user in obj.members.all():
return True
return False
# View
class RoomView(APIView):
def get(self, request):
rooms = Room.objects.prefetch_related("members").all() # get all rooms
serializer = RoomSerializer(rooms, context={"request": request}, many=True)
return Response(serializer.data)
</code></pre>
<p>你应该得到想要的回应</p>
<pre><code>[
{
"id": 1,
"is_member": true,
"name": "first",
"members": [
1
]
},
{
"id": 2,
"is_member": true,
"name": "second",
"members": [
1,
2
]
}
]
</code></pre>