2015-05-02 27 views
0

我一直试图在项目中实现用户特定的实时通知。虽然我能够播放实时通知,但我正面临着创建用户特定频道的艰难挣扎,这些频道将选定的通知发送给用户。至于我为同一尝试去,下面是用几个例子看swampdragon-验证后,我已经写的代码片段:如何使用swampdragon在django中实现用户特定的实时通知?

routers.py:

class NotificationRouter(ModelPubRouter): 
valid_verbs = ['subscribe'] 
route_name = 'notifications' 
model = Notification 
serializer_class = NotificationSerializer 

def get_query_set(self, **kwargs): 
    return self.model.objects.filter(user=self.connection.user) 

def get_object(self, **kwargs): 
    return self.model.objects.get(user=self.connection.user, pk=kwargs['pk']) 

def get_subscription_contexts(self, **kwargs): 
    return {'user__id': self.connection.user.pk} 

模型的.py

class Notification(SelfPublishModel, models.Model): 
serializer_class = NotificationSerializer 
message = models.TextField() 
verb = models.CharField(null=True, default="achieved", max_length=20) 
user = models.ForeignKey(settings.AUTH_USER_MODEL) 

serializer.py

class NotificationSerializer(ModelSerializer): 
    class Meta: 
     model = 'notifications.Notification' 
     publish_fields = ['message','verb','user'] 

此代码无法实现用户特定的通知执行并向所有用户广播消息。据我所知,get_subscription_contexts是过滤通知给选定用户的功能,但我无法通过此代码实现此功能。如果有人能帮我解决这个问题,那将是非常棒的。

感谢

人士Himanshu

回答

1

出在测试的样本项目中的代码,并添加两个用户,我收到通知,只为我登录的用户预期。

你能确认你正在使用的SwampDragon的版本吗?

与测试:

  • Django的== 1.7
  • SwampDragon == 0.4.2
  • SwampDragon-auth的== 0.1.3

我已经创建了一个示范项目与上述实施 - https://github.com/CptLemming/swampdragon_notification_example

在这个例子中,我可以登录到Django管理员,创建一个通知,一个d只有针对选定用户才会显示的通知。

希望它有帮助。