我正在为ios应用程序做一个django rest框架API。目前,我正在做一个用户和家庭之间的功能。 让我解释一下这两个表之间的逻辑。
MyUser =当前用户(可用于登录的帐户)
家庭=当前用户的家庭成员,例如:父亲母亲(不是帐户,不能用于登录)
我现在想的是,如果当前用户的家人想要创建一个帐户,是否可以将家庭表中的数据导入到该家庭成员的用户表中进行注册?
MyUser:userId
,username
,password
,email
,phone_number
,identification_num
,first_name
, last_name
系列:Id
,userId
(用户表的外键,不能为空),familyId
(可以为null,原因是允许用户添加家庭成员没有注册帐户的人,)phone_number
,identification_num
,first_name
,last_name
,relationship
示例场景:
我清楚地解释了吗?对不起,如果不是,你可以告诉我它是否不够清楚,所以我可以试着让它更清楚。 这种设计好吗?好像它有很多缺陷。 是否可以将所有信息导入该邀请注册页面?
我的合作伙伴有另一个想法,即用户和关系表。
关系表:UserId
(当前userId,用户表的外键),FamilyId
(系列用户ID,用户表的外键),Relationship
(例如:母亲,父亲) )
当用户创建关系时,如果家庭没有帐户,用户将创建一个没有用户名和密码的用户(但仍然有userId,但我不明白这是怎么可能的,因为用户名和密码是必须的因此,我的解决方案是第一个1)
答案 0 :(得分:1)
class Relation(models.Model):
to_user = models.ForeignKey('user.User',
related_name='relation_to_user',
on_delete=models.CASCADE)
RELATION = {
0: u'father',
1: u'mother',
2: u'other',
}
relation = models.IntegerField(choices=RELATION.items())
class Family(models.Model):
relations = models.ManyToManyField(Relation)
from_user = models.ForeignKey('user.User',
related_name='family_from_user',
on_delete=models.CASCADE)
user->MyFamily->MyRelations
,但当您的家人拥有其他真实用户时,这会浪费存储空间。
我用Django编写了类似的app后端。我的设计如下:
Relations: from_user to_user relation
Family:users
,使用此模式可以节省存储空间,但每次都需要自己计算家庭关系。
虚假使用可以创建如下:
fake_user.set_unusable_password()