代码之家  ›  专栏  ›  技术社区  ›  Harry Moreno

Django通知序列化目标rest框架

  •  0
  • Harry Moreno  · 技术社区  · 7 年前

    [
        {
            "recipient": {
                "id": 274,
                "username": "harry",
                "first_name": "Harry",
                "last_name": "Moreno"
            },
            "unread": true,
            "target": null,
            "verb": "invite approved"
        }
    ]
    

    序列化程序.py

    class GenericNotificationRelatedField(serializers.RelatedField):                                                          
        User = get_user_model()                                                                                               
    
        def to_representation(self, value):                                                                                   
            if isinstance(value, Invite):                                                                                     
                serializer = InviteSerializer(value)                                                                          
            if isinstance(value, User):                                                                                       
                serializer = UserSerializer(value)                                                                        
            return serializer.data                                                                                            
    
    
    class NotificationSerializer(serializers.Serializer):                                                                     
        recipient = UserSerializer(read_only=True)                                                                            
        unread = serializers.BooleanField(read_only=True)                                                                     
        target = GenericNotificationRelatedField(read_only=True)  
    

    如何使目标非空?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Harry Moreno    6 年前

    结果目标是空的,因为这就是我在模型中创建通知的方式

    notify.send(user, recipient=user, verb='you reached level 10')
    

    如果我想要一个非空的目标,我应该指定一个

    notify.send(user, recipient=user, target=user, verb='you reached level 10')
    

    注意:问题中没有生成json的django视图。 在我们的网址.py我们从应用程序连接到通知视图的路径。

        path(
          "alerts/",
          views.NotificationViewSet.as_view({"get": "list"}),
          name="notifications",
        ),
    

    https://github.com/django-notifications/django-notifications#installation

    推荐文章