向Django Auth用户模型添加便利方法的最佳方法?

我想为django.contrib.auth.models.User模型添加一个便利/模型方法。这是最好的做法,因为上次我检查,扩展用户模型被认为是坏习惯。

我有一个单独的自定义UserProfile模型。我应该使用那些所有用户相关的便利方法?

这取决于您要添加到模型中的内容。如果要添加有关用户的更多信息,则通常建议您使用UserProfile方法:http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

但是,如果您只想将自定义方法或管理员添加到User模型中,那么我可以这么说,使用代理模型更符合逻辑:

from django.contrib.auth.models import User

class UserMethods(User):
  def custom_method(self):
    pass
  class Meta:
    proxy=True

代理模型将在与原始模型相同的数据库表上运行,因此在不实际扩展模型的情况下创建自定义方法是非常理想的。只需将视图中User的任何引用替换为UserMethods。 (当然,您可以通过取消注册用户模型并注册代理模型,从而在管理工具中使用。)

创建的原始用户模型的任何实例都可以通过UserMethods模型立即访问,反之亦然。更多这里:http://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models

(注意代理模型需要Django 1.1及更高版本)

http://stackoverflow.com/questions/1818223/best-way-to-add-convenience-methods-to-a-django-auth-user-model

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:向Django Auth用户模型添加便利方法的最佳方法?