假设有家庭,每个家庭成员都可以登录我的应用程序,当用户登录时,我想显示他与其他家庭成员之间的关系,而不仅仅是家庭成员的姓名。
真正的挑战是根据登录用户的关系是动态的,例如:
A is the father of B
C is the wife of B
B and C have a child D
如果 D 登录,则关系将是
A = granddad
B = father
C = mother
D = me
但如果 A 登录,则关系将是
A = me
B = son
C = daughter in law
D = grandson
这个例子相当简单,但现实世界的情况要复杂得多,比如兄弟姐妹、阿姨、叔叔等。
我正在使用 django,这就是我的模型的定义方式:
class UserProfile(models.Model):
user = models.OneToOneField(User)
family = models.ManyToManyField(FamilyProfile,related_name='family_members')
realname = models.CharField(max_length=100)
date_of_birth = models.DateField(
'user born date', null=True, blank=True)
is_male = models.BooleanField(default=False) # True male
relation_level = models.IntegerField(null=False,blank=False,default=9999)
is_foreign = models.BooleanField(default=False) # True foreign
is_host = models.BooleanField(default=False) # Ture host,
objects = profileManager()
因为关系船是动态的,我不能把它保存到数据库中,而是使用profileManager计算关系船并将其添加到成员:member.relation_name,但这对我来说太复杂了,现在我我使用了很多 if...else 语句,它真的很长,而且很愚蠢,所以请帮我解决这个问题。