Best way to add convenience methods to a Django Auth User model?

前端 未结 5 1657
春和景丽
春和景丽 2020-12-13 19:34

I want to add a convenience/model method to the django.contrib.auth.models.User model. What is the best practice for doing this since, last time I checked, ext

5条回答
  •  囚心锁ツ
    2020-12-13 20:31

    It depends what you are trying to add to the model. If you want to add more information about the user, then it is generally recommended that you use the UserProfile method: http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

    However, if you just want to add custom methods or managers to the User model, I would say that it's more logical to use a proxy model, like so:

    from django.contrib.auth.models import User
    
    class UserMethods(User):
      def custom_method(self):
        pass
      class Meta:
        proxy=True
    

    A proxy model will operate on the same database table as the original model, so is ideal for creating custom methods without physically extending the model. Just replace any references to User in your views to UserMethods. (And of course you can use this in the admin tool by unregistering the User model and registering your proxy model in its stead.)

    Any instances of the original User model that are created will be instantly accessible via the UserMethods model, and vice-versa. More here: http://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models

    (NB. Proxy models require Django 1.1 and above)

提交回复
热议问题