Question:
When I pick up a Sticker, all messages related to this Sticker are recorded in the message field, and you only need to pick up the last message
models.py
class Sticker(models.Model):
board = models.ForeignKey(Board, related_name='stickers')
flags = models.ForeignKey(Flag, related_name='stickers')
class Messages(models.Model):
text = models.TextField()
date = models.DateTimeField()
sticker = models.ForeignKey(Sticker, related_name='messages')
attachment = models.URLField(blank=True)
serializers.py
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = Messages
fields = ('date', 'text', 'id', 'sticker')
class StickerSerializer(serializers.ModelSerializer):
messages = MessageSerializer(Messages.objects.order_by('date')[0], many=True)
class Meta:
model = Sticker
fields = ('id', 'board', 'flags', 'messages')
views.py
class Stickers(ListAPIView):
permission_classes = ()
# authentication_classes = (TokenAuthentication, )
def get(self, request, board_id):
stickers = Sticker.objects.get(board=board_id)
serializer = StickerSerializer(stickers)
return Response(serializer.data)
Answer:
If you only want the last message then try this
serializers.py
class StickerSerializer(serializers.ModelSerializer):
last_message = MessageSerializer(source='messages.last', many=False)
class Meta:
model = Sticker
fields = ('id', 'board', 'flags', 'last_message')