【问题标题】:use django model to get db information from json request使用 django 模型从 json 请求中获取 db 信息
【发布时间】:2017-10-02 22:59:52
【问题描述】:

我正在使用 Django 1.9.6。我有一个简化的用户模型,它对应于数据库中的数据:

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    is_active = models.BooleanField(_('active'), default=False,)

我想从email获取用户信息(is_active)。我的简化用户视图如下:

def settings(self, request, **kwargs):
    self.method_check(request, ['post'])

    data = self.deserialize(
        request, request.body,
        format=request.META.get(
            'CONTENT_TYPE',
            'application/json; charset=UTF-8'
            )
        )

    as_user = request.as_user

    if as_user:
        return self.create_response(request, {
            'success': True,
            'is_active': as_user.is_active,
        })

    return self.create_response(request, {
        'success': False,
    })

请求正文是一个json,看起来像:

{
  "asUser": "user_email@company.com"
}

我不确定在我目前有线路的地方该做什么:

as_user = request.as_user

在模型类中获取有关用户的其他信息。

【问题讨论】:

  • 您需要提供更多详细信息。这个settings 函数来自哪个类? self.deserialize 是什么?如果看起来很可能是反序列化请求正文,为什么不访问data['asUser']

标签: json django postgresql


【解决方案1】:

如果我理解得很好,您想检索与请求正文中发送的电子邮件关联的用户对象:

as_user = models.User.objects.get(email=data['asUser'])

如果找不到电子邮件,这将引发models.User.DoesNotExist 异常。

【讨论】:

  • 不完全是我需要的 (as_user = User.objects.get(email=data.get('as_user'))),但足够接近它让我到达那里。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 2016-01-28
  • 2019-11-25
  • 1970-01-01
相关资源
最近更新 更多