如何在两个用户之间获取最后一条消息?

时间:2015-09-12 17:54:24

标签: python django python-2.7 django-rest-framework

我试图在收件箱页面中的两个用户之间显示最后一条消息。 但是我在选择与主要用户(已登录用户)联系的所有用户时遇到了一些麻烦。

这是我的models.py

class Message(models.Model):
    """
    Model for user messages.
    - Who
    - Whom
    - When
    - Message
    - Status
    """
    user_sender = models.ForeignKey(User, related_name="sender")
    user_receiver = models.ForeignKey(User, related_name="receiver")
    send_date = models.DateTimeField(auto_now_add=True)
    message = models.CharField(max_length=500)
    status = models.BooleanField(default=False)

    def __unicode__(self):
        return u'%s %s ->%s' % (self.send_date, self.user_sender, self.user_receiver)

这是我的serializer.py

class MessagePreviewSerializer(serializers.ModelSerializer):
    info = UserProfileSerializer(many=True, read_only=True)
    last_message = serializers.SerializerMethodField('message_preview')

    def message_preview(self, obj):
        user_id = self.context.get("user_id")
        # getting last message between user_id and obj.id
        return last_msg

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name', 'last_name', 'email', 'info', 'last_message')

我在views.py

中得到了这个
contacts = Message.objects.filter(Q(user_sender_id=token.user_id) |
                                       Q(user_receiver_id=token.user_id)).values('user_receiver_id')
serializer = MessagePreviewSerializer(contacts, context={'user_id': token.user_id}, many=True)

所以我的主要问题是获取用户列表,这些用户是"联系人" (有消息)使用token.user_id,然后调用serializer并在它们之间获取lastmsg并序列化。

这是真的吗?如果是的话,我的代码中出了什么问题?

0 个答案:

没有答案