1
我在我的学习项目中有简单的消息模型。django中的消息通知
class Message(models.Model):
sender = models.ForeignKey(CustomUser, related_name='sender')
reciever = models.ForeignKey(CustomUser, related_name='reciever')
text = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
我该如何向request.user
发送有关新消息的通知。
即我需要通知发送到request.user
如果我有request.user
新Message对象reciever
场
UPD我的观点:
def dialog(request, user_pk):
sent = Message.objects.filter(reciever_id=user_pk, sender_id=request.user.pk)
recieved = Message.objects.filter(reciever_id=request.user.pk, sender_id=user_pk)
mate = CustomUser.objects.get(pk=user_pk)
dialog_list = sorted(chain(sent, recieved), key=lambda a:a.created_at)
if request.POST:
form = MessageForm(request.POST)
if form.is_valid():
f = form.save(commit=False)
f.sender = CustomUser.objects.get(pk=request.user.pk)
f.reciever = CustomUser.objects.get(pk=user_pk)
form.save()
else:
form=MessageForm()
return render(request, 'dialog.html', {'sent':sent,
'recieved':recieved, 'form':form, 'mate':mate, 'dialog_list':dialog_list})
这是一个很广泛的问题;如果你可以更具体地说明你正在尝试做什么,或者你已经尝试过那些没有奏效的东西,那将会很有帮助。 – nthall
我只是想建议。我想我需要在我的'Message'模型中使用标志,就像request.user中的“被查看”和“不”。然后通过'request.user'在我的数据库中检查“not viewed”'Message.reciever'。但我现在不怎么能做到这一点 –
那么,未读的国旗是一个好主意。 [BooleanField](https://docs.djangoproject.com/en/1.8/ref/models/fields/#booleanfield)是您想要的字段。然后,在适当的视图中,您可以使用[queryset filtering](https://docs.djangoproject.com/en/1.8/topics/db/queries/#retrieving-specific-objects-with-filters)检查消息。 – nthall