Self-referential User relationship

64 views
Skip to first unread message

thinkwell

unread,
Sep 11, 2015, 9:10:07 PM9/11/15
to Django users
Hello,

I have to do a bit of a code rewrite and I want to measure twice and cut once with this.

I need to store use extra information about each user, so I'm creating a profile. And each user can follow other users, so I create a ManyToMany field referencing the User model, and not "self" correct?

Like so:

 class Profile(models.Model):
   
"""Storing extra info about user"""
   name
= models.OneToOneField(User, related_name='profile')
   moreinfo
= models.TextField()
 
   friends
= models.ManyToManyField(User, blank=True, through='Relationship',
   symmetrical
=False,
   related_name
='relationship')
 
 
 
class Relationship(models.Model):
   from_user
= models.ForeignKey(User, related_name='from_user')
   to_user
= models.ForeignKey(User, related_name='to_user')
   rtype
= models.TextField()
   moreinfo
= models.TextField(null=True, blank=True)
 
 
class Meta:
   unique_together
= ('from_user', 'to_user')



Rather than like so:



 class Profile(models.Model):
   
"""Storing extra info about user"""
   name
= models.OneToOneField(User, related_name='profile')
   moreinfo
= models.TextField()
 
   friends
= models.ManyToManyField(self, blank=True, through='Relationship',
   symmetrical
=False,
   related_name
='relationship')
 
 
 
class Relationship(models.Model):
   from_user
= models.ForeignKey(Profile, related_name='from_user')
   to_user
= models.ForeignKey(Profile, related_name='to_user')
   rtype
= models.TextField()
   moreinfo
= models.TextField(null=True, blank=True)
 
 
class Meta:
   unique_together
= ('from_user', 'to_user')

thinkwell

unread,
Sep 12, 2015, 9:21:10 AM9/12/15
to Django users
Ok, I suppose never mind! I found this [django-friendship](https://github.com/revsys/django-friendship/) module and in reading their model layout, I'll be able to get done what I need to do.
Reply all
Reply to author
Forward
0 new messages