2017-09-18 11 views
0

私は私の学校プロジェクトのdjangoで通知システムを構築しようとしています。Django通知システム

私は誰かが私はこの

answers = Answer.objects.filter(question__user=request.user).order_by('-id') 

これは、ユーザーに通知する簡単な方法であるようなことをやっている彼の質問に答えた場合、ユーザーに通知したいと考えています。また、ユーザーは最後のログイン以降に受け取った新しい通知を知らないでしょう。ここで

は、私がこのような何かをしようとしていることを行うために通知アプリ、

class Notifs(models.Model): 
    user = models.ForeignKey(User) 
    timestamp = models.DateTimeField(null=True, blank=True) 

のためのモデルですが、私は、ユーザーがして、この時間を比較した通知のページ&を開いた最後の時間を節約しています答えの時。したがって、ユーザーが最後にページを開いた後に回答を受け取った場合は、通知する必要があります。ビューで

私は、ユーザーが&誰かがそれ以来、彼の質問に答えた通知ページを開いているので、時間を比較することができます正確にどのように知っていない、

def notifications(request): 
new = Notifs.objects.filter(user=request.user) 
if new: 
    new.update(timestamp=timezone.now()) 
else: 
    Notifs.objects.create(user=request.user, timestamp=timezone.now()) 

last_seen = ??? 
count = Answer.objects.filter(question__user=request.user, timestamp__gte=last_seen).count() 

をこのような何かをしようとしています。どうすればいい?

助けてください。ありがとうございました:)

答えて

0

回答のモデルでは、あなたがこのようにフィールドを持っていることを確認してください。

created = models.DateTimeField(auto_now_add=True) 

これは、新しいエントリが作成された時間を追跡し、あなたがする必要はありません。自動的にそれを行うように、フィールドを設定するもの。あなたは

ことを持っている、と私はあなたのtimestamp場を仮定していることの通知がチェックした最後の時間を格納することになったら、あなたはこのような何かをするだろう:

last_checked = Notifs.objects.get(user=user).values_list('timestamp', flat=True) 

新しい通知を取得するには、あなたがどうなるの

answers = Answer.objects.filter(question__user=request.user, created__gte=last_checked).order_by('-id') 
+0

「Notifs」オブジェクトには属性 'values_list'がありません。エラーが発生しました。私は何をすべきか? –

+1

試してみてください: 'Notifs.objects.values_list( 'timestamp'、flat = True).get(user = user)'それは問題だとは思いません。それは機能しているはずです。 –

+0

うわー、ついにはすべてがうまくいっています。便利な回答をいくつかお寄せいただきありがとうございます。 –

関連する問題