Python 如何在两个用户之间获取最后一条消息?
我试图在收件箱页面中显示两个用户之间的最后一条消息。 但是我在选择与主用户(登录用户)联系的所有用户时遇到一些问题 这是我的Python 如何在两个用户之间获取最后一条消息?,python,django,python-2.7,django-rest-framework,Python,Django,Python 2.7,Django Rest Framework,我试图在收件箱页面中显示两个用户之间的最后一条消息。 但是我在选择与主用户(登录用户)联系的所有用户时遇到一些问题 这是我的型号.py: class Message(models.Model): """ Model for user messages. - Who - Whom - When - Message - Status """ user_sender = models.ForeignKey(User, relate
型号.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)
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')
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)
这是我的序列化程序.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)
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')
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)
我在我的视图.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)
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')
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)
因此,我的主要问题是获取用户列表,这些用户是带有标记的“联系人”(有消息)。用户id
,然后调用序列化程序,在他们之间获取lastmsg
,并将其序列化
是真的吗?如果是,我的代码有什么问题