Как сериализовать модель с реляциями от многих к многим?
У меня есть эта функция в моей модели,
def serialize(self):
return {
'id': self.id,
'author': self.author.username,
'text': self.text,
'timestamp': self.timestamp.strftime("%b %d %Y, %I:%M %p"),
'likes': self.likes.all(),
'likes_number': len(self.likes.all()),
}
но likes - это фактически много-много реляций с User. Как я могу сериализовать его, чтобы получить что-то вроде этого?
def serialize(self):
return {
'id': self.id,
'author': self.author.username,
'text': self.text,
'timestamp': self.timestamp.strftime("%b %d %Y, %I:%M %p"),
'likes': [
user1,
user2,
etc.
],
}
Так что я также могу избавиться от свойства 'likes number'.
Для сериализации данных можно использовать list comprehension, но использование сериализатора django rest framework является более правильным.
return {
'id': self.id,
'author': self.author.username,
'text': self.text,
'timestamp': self.timestamp.strftime("%b %d %Y, %I:%M %p"),
'likes': [{'id':like.id,...} for like self.likes.all()],
'likes_number': len(self.likes.all()),
}