2

根据 Django 的建议,如果信息与身份验证不直接相关,则信息应存储在单独的模型中,我在我的应用程序中创建了自定义用户模型和配置文件模型。

就像是:

class User(AbstractBaseUser):
    email = models.EmailField(
            verbose_name='email address',
            max_length=255,
            unique=True
            )
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    location = models.ForeignKey(Location)
    date_of_birth = models.DateField()
    date_joined = models.DateTimeField(auto_now_add=True)

    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name', 'location', 'date_of_birth']

class Profile(models.Model):
    user = models.OneToOneField(User)

    picture = models.ImageField(upload_to='profile_pictures/', 
                              default='default.jpg')
    bio = models.TextField(blank=True)
    sex = models.CharField(max_length=10,
                           choices=(('Male', 'Male'),
                                    ('Female', 'Female'),
                                    ('No Comment', 'No Comment')),
                           default="No Comment")
    occupation = models.CharField(max_length=100, blank=True)

让其他模型引用用户的最佳做法是什么?例如,我的应用程序有一个消息系统。在Message模型中,最好有外键关系 toProfile而不是User?该模型是否应该User仅用于身份验证?

4

1 回答 1

2

我认为您可以将模型与用户相关联并使用相关名称来访问配置文件。

这使您的模型不直接依赖于自定义配置文件。

于 2014-10-08T03:35:13.007 回答