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

查看:109
本文介绍了如何将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.

那么,如何转换一个基础模型类进入其代理类?

推荐答案

这是另一个数据库命中,但这将工作: p>

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天全站免登陆