Python 在django模板中获取代理用户对象

Python 在django模板中获取代理用户对象,python,django,proxy,django-authentication,Python,Django,Proxy,Django Authentication,我有MyUser作为代理User模型 模型 我呈现我的html如下 意见 设置.py 在模板中,当我调用{{user}}时,我得到user对象,我可以调用所有方法,比如,user.is\u authenticated等 但问题是我在代理模型中定义了一些属性,我想在访问用户对象时使用这些属性。 我的意思是我需要{{user}}成为MyUser的一个实例 如果你不跟我走,请告诉我。 干杯。我建议您不要将request.user转到您的代理实例,因为Django内部可能希望它是user模型的实例 您可

我有
MyUser
作为代理
User
模型

模型 我呈现我的html如下

意见 设置.py 在模板中,当我调用
{{user}}
时,我得到
user
对象,我可以调用所有方法,比如,
user.is\u authenticated

但问题是我在代理模型中定义了一些属性,我想在访问用户对象时使用这些属性。 我的意思是我需要
{{user}}
成为
MyUser
的一个实例

如果你不跟我走,请告诉我。
干杯。

我建议您不要将
request.user
转到您的代理实例,因为Django内部可能希望它是
user
模型的实例

您可以做的是将属性添加到
用户
模型中,通过它您将访问代理实例

e、 g

然后在模板中,您将访问它,如下所示:

{{ user.my_proxy.keywords }}

我确信有办法将模型实例转换为代理模型实例,而不必访问数据库,但这个实现只是为了展示这个想法。

proxy\u access\u fn是MyUser类的一部分?不。这是独立的功能。在代理访问中使用
self
?是的。指示它将作为类实例上的属性或绑定方法工作。在使用
setattr
将其设置为
User
后,它的行为就是这样的。太棒了,它速度快、干净,而且可以完成任务+一个哥们。
return render_to_response('new/view_image.html', context_instance=RequestContext(request, ctx))
TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.messages.context_processors.messages',
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.request',
    'django.core.context_processors.media',
)
class MyUser(User):

    class Meta:
        proxy = True

    @property
    def keywords(self):
        return u','.join(self.get_full_name().split())



def proxy_access_fn(self):
    return MyUser.objects.get(id=self.id)


setattr(User, 'my_proxy', property(proxy_access_fn))
{{ user.my_proxy.keywords }}