Моделирование пользовательских и пользовательских соединений в Django - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть объект User и объект Connection для управления соединениями между пользователями.

class User:
    username = models.CharField(max_length=100,)

и

class Connection:
    user = models.ForeignKey(User)
    friend = models.ManyToManyField('self', related_name="_friends", symmetrical=True)
    followers = models.ManyToManyField('self', related_name="_followers", symmetrical=False)
    following = models.ManyToManyField('self', related_name="_following", symmetrical=False)

Я не уверен, как добавить друзей в этом моделировании.

user.connection_set._friends.add(target) -> does this work?

Может ли кто-нибудь помочь мне с этим.

1 Ответ

0 голосов
/ 09 ноября 2018

Использовать OneToOne (я полагаю, у вашего пользователя есть только одно соединение с несколькими подписчиками, друзьями и т. Д.)

Если вы используете поле FK или m2m, вам нужно сделать еще один шаг, чтобы определить, какое соединение вы будете использовать (что-то вроде User.objects.get (XXXX) .connection.get (XXXX)

class User:
    username = models.CharField(max_length=100,)

class Connection:
    user = models.OneToOneField(User)
    friend = models.ManyToManyField('self', related_name="_friends", symmetrical=True)
    followers = models.ManyToManyField('self', related_name="_followers", symmetrical=False)
    following = models.ManyToManyField('self', related_name="_following", symmetrical=False)


user = User.objects.last()
user_to_add = User.objects.first()
user.connection.followers.add(user_to_add)
...