将自定义字段添加到Django中的auth_user表

时间:2012-03-12 16:49:42

标签: django

目前,我使用自定义列(例如地址和电话号码)创建了另一个名为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?这是个好主意吗?

2 个答案:

答案 0 :(得分:11)

Django提供了内置支持,可以使用您自己的属性扩展用户,称为User Profileshere概述了如何设置的快速概述。

答案 1 :(得分:1)

这通常是我喜欢的方法,我不喜欢触摸Django用户只是为了安全。这样你就知道你不会与用户模型中的任何东西冲突,并且它清楚地表明哪些代码是框架代码,哪些代码是你的代码。

我通常不会将其称为MyAppUser,但更常见的是UserSettings。我不希望将与用户相关的类混淆为User对象的替换,而只是提供更多信息。

通常在应用程序中,您将拥有遍布User的所有外键,因此我仍然会为所有这些使用Django User类。我发现它可以保持清洁。

我试图继承User并发现它并没有给我太多,最终让人感到困惑,超出了他们的需要。