Использую django и drf
class Thread(models.Model):
participants = models.ManyToManyField(User)
last_message = models.DateTimeField(null=True, blank=True, db_index=True)
is_chat = models.BooleanField('Чат', default=True)
is_group = models.BooleanField('Группа', default=False)
def get_last_message(self):
try:
return self.message_set.latest('id').text
except:
return ""
class Message(models.Model):
text = models.TextField()
sender = models.ForeignKey(User, on_delete=models.CASCADE)
thread = models.ForeignKey(Thread, on_delete=models.CASCADE)
datetime = models.DateTimeField(auto_now_add=True, db_index=True)
def __str__(self):
return self.text
Вот такая вьюха:
class Threads(APIView):
permission_classes = (permissions.IsAuthenticated,)
def get(self, request, format=None):
queryset = User.objects.get(username=request.user).thread_set.all()
serializer = ThreadSerializer(queryset, many=True)
return Response(serializer.data)
И вот такой сериализатор:
class ThreadSerializer(serializers.ModelSerializer):
participants = UserWrap(many=True)
class Meta:
model = Thread
fields = ('id','get_last_message', 'participants')
Получается примерно вот такое api:
[
{
"id": 1,
"get_last_message": "Hi",
"participants": [
{
"id": 1,
"username": "test",
"pic": "/media/I45TU27WKS8U.png"
},
{
"id": 2,
"username": "Just",
"pic": "/media/EUHT4ZC5ZE6R.png"
}
]
},
Как в participants отобразить только данные адресата? Думал через прокидывание второго запроса с помощью exclude(), но такое невозможно.