【问题标题】:User matching query does not exist. Viber bot Python用户匹配查询不存在。 Viber 机器人 Python
【发布时间】:2021-12-08 22:59:13
【问题描述】:

机器人问题。发送数据时,机器人会给出与数据库中缺少用户匹配相关的错误。在这种情况下,实际上,用户并没有添加到 proceed_request() 函数的基础中。 可能是什么问题呢?谢谢。

    def proceed_request(self, viber_request):
        if isinstance(viber_request, ViberMessageRequest):
            if not User.objects.filter(user_id=viber_request.sender.id).exists():
                User.objects.update_or_create(
                    user_id=viber_request.sender.id,
                    name=viber_request.sender.name,
                    country=viber_request.sender.country,
                    language=viber_request.sender.language
                )

    def send_confirmation(self, confirmation):
        order = Order.objects.create(
            user_id=User.objects.get(user_id=data.get('viber_id')).id,
            order_id=data.get('order_id'),
        )

【问题讨论】:

    标签: python django viber viber-bot viber-bot-python


    【解决方案1】:

    检查if not User.objects.filter(...).exists() 是多余的,因为您已经使用了update_or_create。在 documentation 中,您可以找到 defaults 参数来表示您想要的内容:

    def proceed_request(self, viber_request):
        if isinstance(viber_request, ViberMessageRequest):
            User.objects.update_or_create(
                user_id=viber_request.sender.id,
                defaults=dict(
                    name=viber_request.sender.name,
                    country=viber_request.sender.country,
                    language=viber_request.sender.language
                )
            )
    
    def send_confirmation(self, confirmation):
        order = Order.objects.create(
            user_id=User.objects.get(user_id=data.get('viber_id')).id,
            order_id=data.get('order_id'),
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-13
      • 2021-07-19
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多