http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
在扩展User模型时,上面的文章列出了两种方法:旧方法(ForeignKey)和新方式(具有继承的用户模型)。但与此同时,这篇文章的历史可以追溯到2008年8月。
我正在使用Django的开发版本。
您是否建议使用继承扩展Django User模型或使用ForeignKey?
我在几篇帖子中读到了不建议扩展django.contrib.auth.models.User的内容,所以我不会那么看。
答案 0 :(得分:1)
AFAIK,更清晰的方法 - 如果它适合您的项目架构 - 是拥有一个独特的用户配置文件模型,并使用AUTH_PROFILE_MODEL设置将其链接到Django用户模型。
请参阅Django Doc about storing additional information for Users
答案 1 :(得分:1)
Dominique Guardiola是对的。使用AUTH_PROFILE_MODEL。 James Bennett在他的“Django in Depth”演讲中重申了这一点。 http://www.youtube.com/watch?v=t_ziKY1ayCo&feature=related大约1小时:37分钟。
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User) #notice it must contain a 1 to 1 field with the auth user.
last_ip_address = models.CharField(max_length=20, default="")
....
AUTH_PROFILE_MODULE = 'BngGangOfFour.UserProfile' #not case sensitive.
....
....
def index(request):
if request.user.get_profile().last_ip_address = "127.0.0.1":
print("why hello me!")
return render_to_response('index.html', locals(), context_instance=RequestContext(request))
答案 2 :(得分:0)
如果你正在编写一个auth后端,而你将只能返回相应模型的实例,那么你唯一可以通过继承来彻底摆脱扩展User
。