我正在使用Django创建一个项目,并且想知道如何区分对象。现在,我正在创建消息框部分,我想要做的是显示用户一直在联系的用户名。我目前的方式是这样的
models.py
class Message(models.Model):
''''''
text = models.TextField()
created = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='myself')
someone = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='someone')
views.py
def inbox(request):
'''See messages history'''
messages = Message.objects.filter(user=request.user).distinct('someone')
notification = Message.objects.filter(someone=request.user).distinct('user')
return render(request, 'campus_feed/inbox.html', {'messages': messages})
所以我想做的是列出正在与我联系或与我联系的用户,但我不想多次显示相同的名字,但是我无法提出一种很好的过滤方法。有人可以给我提示吗?
答案 0 :(得分:3)
如果需要用户,则应请求用户。
User.objects.filter(Q(myself__someone=request.user) | Q(someone__user=request.user))
这为您提供了既是当前用户消息中的“某人”,又是当前用户消息中的“用户”的所有用户。由于您是直接查询用户,因此不可能重复。