Как реализовать фолловеров / фолловеров в Django

Я хочу реализовать функцию подписчиков / подписок в моем приложении 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>]

Но, как вы можете видеть, когда я добавляю нового пользователя в поле пользователя следует за , с другой стороны также добавляется симметричное отношение. Буквально: если пользователь1 следует за пользователем2, то пользователь2 следует за пользователем1, и это неверно .

В чем моя ошибка? У вас есть способ правильно настроить подписчиков и подписчиков?

Спасибо, ребята.

15
задан Fred Collins 2 June 2011 в 17:45
поделиться