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