如何将 request.user 转换为代理 auth.User 类? [英] How to convert request.user into a proxy auth.User class?

查看:23
本文介绍了如何将 request.user 转换为代理 auth.User 类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我和 在这个问题中提出,但适用于 Django 的 auth.User.

I have the same conundrum as presented in this question, but applied to Django's auth.User.

我有这个代理模型:

class OrderedUser(User):
    def __unicode__(self):
        return self.get_full_name()

    class Meta: 
        proxy=True
        ordering=["first_name", "last_name"]

我的其他一些模型使用 OrderedUser 而不是 django.contrib.auth.models.User 作为字段类型.

And some of my other models use an OrderedUser instead of a django.contrib.auth.models.User as field types.

在我的视图中,我使用 request.user 来填充一个字段 - 正如预期的那样 - 得到一个错误:

In my views I then use the request.user to populate a field and - as expected - get an error:

'Cannot assign "<User...>": <field> must be a "OrderedUser" instance'

我可以只做 OrderedUser.objects.get(request.user.id),但这是对数据库的额外命中.

I could just do OrderedUser.objects.get(request.user.id), but that is an extra hit to the database.

那么,如何将基础模型类转换为其代理类?

推荐答案

这是另一个数据库命中,但这会起作用:

It's another database hit, but this will work:

OrderedUser.objects.get(pk=request.user.pk)

编辑您可以尝试:

o = OrderedUser()
o.__dict__ = request.user.__dict__

这篇关于如何将 request.user 转换为代理 auth.User 类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆