Reputation: 21
class Profile(models.Model):
user = models.OneToOneField(User)
followers = models.ManyToManyField(User, related_name='is_following', blank=True)
activation_key = models.CharField(max_length=120, blank=True, null=True)
activated = models.BooleanField(default=False)
timestamp = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
objects = ProfileManager()
def __str__(self):
return self.user.username
in shell when I type User.profile.followers.all()
and when i type User.is_following.all()
I receive different result.
Upvotes: 2
Views: 3715
Reputation: 482
First, i'd change :
followers = models.ManyToManyField(User
to
followers = models.ManyToManyField(Profile
Then, if you try to print
user1 = Profile.objects.create() #missing args but you don't need it for the example
user2 = Profile.objects.create()
user1.followers.add(user2)
user1.followers.all()
You'll get :
[user2]
But if you do
user1.is_following.all()
You'll get :
[]
Finally, if you do :
user2.is_following.all()
Result will be :
[user1]
related_name allows you to get your object in another object.
Upvotes: 1