如何将request.user转换成代理auth.User类? [英] How to convert request.user into a proxy auth.User class?
问题描述
我也有同样的难题:在这个问题中提出了,但是应用于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屋!