0

在我的项目中,登录后,用户必须经过几个过程来输入他们的个人资料,上传一些文件

现在我已经完成了身份验证过程

我的 UserProfile 中只有三个文件

模型.py

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    #activation_key is used in my account registration process
    activation_key = models.CharField(max_length=40) 
    #activation link should be only valid for one day       
    key_expires = models.DateTimeField() 


    def __unicode__(self):
       return self.user.username

这三个文件足以使认证过程正常工作。

最初在我的数据库设计中,我使用其他表来保存个人详细信息和文件(因为我还不知道我应该使用 UserProfile 来保存用户的其他数据)。但是在通过身份验证过程并在 stackoverflow 中遇到许多帖子之后,似乎我应该将数据放在 UserProfile 表中。

所以我的问题是,

  1. UserProfile 是否可以包含身份验证过程的数据(例如activation_key key_expire_date)和特定数据,例如名称、国家、图片?(现在我的 UserProfile 仅包含身份验证过程的数据)

  2. 在这种情况下,现在添加新字段或创建另一个表来保存附加信息,哪个是 Django 项目的更好做法?

  3. 如果我向 UserProfile 添加新字段,它会影响我以前的身份验证功能吗?(我有点担心 profile.save() 问题..)

非常感谢您的澄清。

4

1 回答 1

1

There should be no issue in adding further fields to your UserProfile object - as long as you don't change the data in the columns used by the auth process then you will be fine.

With regards to whether you should split the users 'auth' data from their other data (name, country etc) is really a design question. If you expect that every users profile will always have both kinds of data, then having them together in one table probably makes sense. However, if a user may have 'auth' data, but not necessarily have the other data at any given time, then it probably makes sense to split them into two tables so that the data sets can be maintained separately.

于 2013-07-03T06:38:37.457 回答