2017-10-11 11 views
0

Djangoプロジェクトの通知アプリケーションを作成しようとしています。別のモデルにインスタンスを追加する

私は私の意見の一つとしてこれを持っている:

class LikePostToggle(RedirectView): 
    def get_redirect_url(self,pk): 
     obj = get_object_or_404(UserPost,pk=pk) 
     user = self.request.user 
     if user.is_authenticated(): 
      if user in obj.likes.all(): 
       obj.likes.remove(user) 
      else: 
       obj.likes.add(user) 
       #Add notification to UserNotification model 
       #Auto fill all fields 
     return obj.get_absolute_url() 

そして、これは私のUserNotificationモデルである:私はuserフィールドがコミットユーザーになりたいと思うモデルで

class UserNotification(models.Model): 
    user = models.ForeignKey(User,related_name='user',null=True) 
    post = models.ForeignKey('feed.UserPost',related_name='post-notification') 
    timestamp = models.DateTimeField(auto_now_add=True) 
    notify_type = models.CharField(max_length=6) 
    read = models.BooleanField(default=False) 

    def __str__(self): 
     return self.user 

アクション(好き、コメントなど)。

私の質問は、私は誰かがポストやコメントを好きなので、ユーザーに通知することができるように、それはまたUserNotificationモデルにインスタンスを追加しますLikePostToggleビューをトリガーするたびようにそれを作る上で行くかもしれない方法ですか?

答えて

1

UserNotification()でインスタンスを作成し、save()を呼び出すか、createショートカットを使用できます。

ビューでは、投稿とログインしたユーザーにアクセスできます。タイムスタンプが自動的に追加され、あなただけにnotify_typeを設定するかを決定する必要がありますのでreadは、Falseにデフォルト設定されます:私のフィード/ポスト/ 5/ /のような名前の要求/時エラー `NameErrorを与える

obj.likes.add(user) 
#Add notification to UserNotification model 
notification = UserNotification.objects.create(
    user=self.request.user, 
    post=obj, 
    notify_type="???" 
) 
+0

'は定義されていません。' – Garrett

+0

そして、ポストの作成時に 'UserNotification'モデルにインスタンスを追加しません。 – Garrett

+0

クラスベースのビューのメソッドの場合、 'self.request'は' request'でなくてはなりません。 – Alasdair

関連する問題