如何将当前用户的属性转换成如下所示的dict格式...我尝试了request.user.__dict__
和request.user.__class__.__dict__
,但没有提供该数据
{
'_state': < django.db.models.base.ModelState object at 0x7fa2c8a14da0 > ,
'id': 1,
'password': 'gVFDqqWHxJhnrkyYANJb',
'last_login': None,
'is_superuser': False,
'username': 'ualexander',
'first_name': 'Valerie',
'last_name': 'Jones',
'email': 'gonen@yahoo.com',
'is_staff': False,
'is_active': True,
'date_joined': datetime.datetime(2019, 4, 6, 10, 52, 24, 142211, tzinfo = < UTC > )
}
def dashboard_view(request):
print(request.user.__dict__)
{'_setupfunc': <function AuthenticationMiddleware.process_request.<locals>.<lambda> at 0x7fe71c6bfea0>, '_wrapped': <User: nitin>}
答案 0 :(得分:-2)
您可以这样做。
request.user.__class__.objects.filter(pk=request.user.id).values().first()
它将返回这样的示例输出
{'id': 1, 'last_login': datetime.datetime(2019, 4, 5, 10, 44, 19, 110212, tzinfo=<UTC>), 'is_superuser': True, 'username': 'example', 'first_name': 'first', 'last_name': 'last', 'is_staff': True, 'is_active': True, 'date_joined': datetime.datetime(2019, 4, 5, 9, 31, 16, 736841, tzinfo=<UTC>), 'created_at': datetime.datetime(2019, 4, 5, 9, 31, 16, 962971, tzinfo=<UTC>), 'modified_at': datetime.datetime(2019, 4, 5, 9, 31, 16, 962992, tzinfo=<UTC>), 'deleted_at': None, 'is_deleted': False, 'user_id': 1, 'password': 'pbkdf2_sha256$150000$JDcvyHbn1aFI$8gzgVZP/+bvZVQ/OISSF/+BJcJuAJE7zGU4rpBVpA8M=', 'email': 'examle@gmail.com', 'member_from': datetime.date(2019, 1, 1), 'phone_number': '011111111'}
更新:
您想将对象作为字典供请求用户使用。
在Django request.user
中,不能以dict格式提供数据
为了获得理想的结果,您需要完成一些棘手的任务。
request.user.__class__.objects.filter(pk=request.user.id).values().first()
这里request.user.__class__
是模型名称的结果,然后使用当前用户对其进行过滤。