2017-11-10 3 views
2

메시징 앱을 빌드하려고합니다.메시지 모델에서 고유 한 수신자 가져 오기

data = Message.objects.filter(Q(sender=request.user) | Q(receiver=request.user)).order_by('-created_at') 

템플릿에서 : 여기

{% for abc in data %} 
    {{ abc.receiver }} <br/> 
{% endfor %} 

내가 별개의 수신기와 다시 순서를 필터링 할

class Message(models.Model): 
    sender = models.ForeignKey(User, related_name="sender") 
    receiver = models.ForeignKey(User, related_name="receiver") 
    msg_content = models.TextField() 
    created_at = models.DateTimeField(auto_now_add=True) 

이 내가보기에 뭘하려 : 여기 내 모델의 그들은 누구에게 request.user이 최근에 새로운 메시지를 보냈는지에 기반합니다 (소셜 미디어 플랫폼에서 보았 듯이).

어떻게하면됩니까? receiver_id-created_at에 의해 request.user, 순서에 따라 전송

답변

0

필터 메시지는 다음 receiver_id

Message.objects.filter(sender=request.user).order_by('receiver_id','-created_at').distinct('receiver_id') 
+0

경에 별개의 사용 구분이 작동하지 않습니다. 그것은 여전히 ​​메시지와 같은 숫자로 수신기를 보여줍니다. –

+0

나는 내 대답을 업데이트했습니다. 이것이 도움이 되길 바랍니다. – Satendra

+0

이전 답변이 지저분 해졌고, 더 깨끗한 접근 방식을 찾았습니다. 이걸 시험해보고 나에게 알려줘? – Satendra

관련 문제