пользователь ставит лайк другой пользователю, если тот человек отвечает взаимностью, то что-то делаем.
Есть идея записывать это в БД, методом ManyToMany:
User1 -> User2
User2 -> User1
...
User4 -> User8
И каждый раз, когда обновляется эта БД - проверять, есть ли у User8 в лайках User4.
Но насколько это практично? И есть ли другие способы это реализовать?
У юзера добавляешь поле m2m на себя и указываешь symmetrical = False https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.ManyToManyField.symmetrical
погугли как создать друзей в джанго, это очень похожая ситуация, на ютюбе видео подобное видел
Оу... Ранее не замечал этого поля в документации. Благодарю. Сейчас буду разбираться.
А хотя нет, не понял, как мне это поможет?
То есть я просто добавляю пользователю поле m2m, а когда его обновляю проверяю, нет ли у пользователя, которого я туда добавил, пользователя, которому я добавляю? Иначе говоря, когда я добавляю друга я сразу же проверяю, нет ли у этого человека меня в друзьях? Верно?
не надо проверять, джанга дубль не создаст
Мне проверка нужна, чтобы сделать что-то. Например, отправить письмо или пнуть frontend.
если сделаешь симмертикал фалсе то таблица такая будет и связь только в одну сторону будет создаваться. Точто тебе и надо
проверка чего?
Взаимная ли дружба.
У юзера получаешь друзей и проверяешь а есть ли там нужный юзер типа if user1 in User.objects.frends.all()
не надо так делать
Я об этом и говорю) Всё, спасибо. Подведу итог: Мне надо добавить поле friends в модель User, которое будет m2m и выключить симметрию. Как только буду обновлять таблицу, проверять нет ли у человека в друзья... Всё так?)
если ты повторно случайно добавишь друга опять то связь не задублируется
Окей, благодарю.
Вот посмотри, только он симметрикал фалсе не делает https://www.youtube.com/watch?v=hyJO4mkdwuM&list=PLgCYzUzKIBE9KUJZJUmnDFYQfVyXYjX6r&index
ты разверни тестовую БД быстренько и проверь так ли тебе нужно, делать начнешь поймешь как надо))
Обсуждают сегодня