目前,我使用自定义列(例如地址和电话号码)创建了另一个名为MyAppUser
的类/表,该列具有Django身份验证User
的外键。
像这样的东西
from django.db import models
from django.contrib.auth.models import User
class MyAppUser( models.Model ) :
def __unicode__( self ) :
return self.user.username
user = models.ForeignKey( User )
comment = models.TextField( blank = True )
phone = models.CharField( max_length = 135, blank = True )
以上方法是一个好习惯吗?或者我应该尝试直接修改auth_user
?如果是这样,我该怎么做?
奖金问题:有没有办法让我的自定义表格也被称为User
?我考虑过尝试from django.contrib.auth import models
,然后调用models.User
,但我认为这也会与django.db.models
发生冲突。也许我需要尝试from django.contrib.auth.models import User as AuthUser
?这是个好主意吗?
答案 0 :(得分:11)
Django提供了内置支持,可以使用您自己的属性扩展用户,称为User Profiles。 here概述了如何设置的快速概述。
答案 1 :(得分:1)
这通常是我喜欢的方法,我不喜欢触摸Django用户只是为了安全。这样你就知道你不会与用户模型中的任何东西冲突,并且它清楚地表明哪些代码是框架代码,哪些代码是你的代码。
我通常不会将其称为MyAppUser
,但更常见的是UserSettings
。我不希望将与用户相关的类混淆为User
对象的替换,而只是提供更多信息。
通常在应用程序中,您将拥有遍布User
的所有外键,因此我仍然会为所有这些使用Django User
类。我发现它可以保持清洁。
我试图继承User
并发现它并没有给我太多,最终让人感到困惑,超出了他们的需要。