Я хочу реализовать функцию подписчиков / подписчиков в моем приложении Django.
У меня есть UserProfile класс для каждого Пользователя (django.contrib.auth.User):
class UserProfile(models.Model):
user = models.ForeignKey(User, unique = True, related_name = 'user')
follows = models.ManyToManyField("self", related_name = 'follows')
Итак, я попытался сделать это в оболочке Python:
>>> user_1 = User.objects.get(pk = 1) # <-- mark
>>> user_2 = User.objects.get(pk = 2) # <-- john
>>> user_1.get_profile().follows.add(user_2.get_profile())
>>> user_1.get_profile().follows.all()
[<UserProfile: john>]
>>> user_2.get_profile().follows.all()
[<UserProfile: mark>]
Но, как вы можете видеть, когда я добавляю нового пользователя в поле follows
пользователя, также добавляется симметричное отношение на другой стороне. Буквально: если пользователь1 следует за пользователем2, то также пользователь2 следует за пользователем1, и это неправильно .
Где моя ошибка? У вас есть способ реализовать последователей и правильно следовать?
Спасибо, ребята.