我正在创建一个应用程序,其中用户使用用户名、电子邮件和密码注册。这些数据存储在一个表中。但随后用户输入个人资料信息,如照片、个人简介、活动等。是否将此数据存储在与用户名、电子邮件和密码相同的表中?还是创建另一个表,以某种方式将它们链接起来?
你可以用OneToOne关系创建一个不同的表UserProfile
class UserProfile(models.Model):
user = models.OneToOne(User, unique=True)
location = models.CharField(max_length=140)
bio = models.CharField(max_length=140)
profile_picture = models.ImageField(upload_to='profile_pics', blank=True)
在settings.py中:
AUTH_USER_MODEL = 'accounts.User'
您希望扩展User模型以包含其他信息。对此,推荐的方法是创建另一个类似Profile的模型,并设置与用户的OneToOne关系。
您可以创建一个包含您想要存储的信息的新表,但最重要的是将新表与来自userid
的userid连接起来CREATE TABLE USER_INFORMATIONS(
Information_ID SERIAL PRIMARY KEY,
USER_ID (int or varchar acoording to the user table),
…
FOREIGN KEY (USER_ID) REFERENCES Users(Id)
);