Встречается на собеседованиях • сегодня

Как сделаешь механизм подписки одних пользователей на других

Для реализации подписки пользователей друг на друга можно использовать отношение "многие ко многим" через промежуточную таблицу. Вот пример на Django:

python
from django.db import models
from django.contrib.auth.models import User

class Subscription(models.Model):
    subscriber = models.ForeignKey(
        User, 
        related_name='subscriptions',
        on_delete=models.CASCADE
    )
    target_user = models.ForeignKey(
        User, 
        related_name='subscribers',
        on_delete=models.CASCADE
    )
    created_at = models.DateTimeField(auto_now_add=True)
text
class Meta:
    unique_together = ('subscriber', 'target_user')
text

Основные моменты:
1. Храним кто на кого подписан в отдельной таблице
2. Добавляем created_at для отслеживания времени подписки
3. Уникальный индекс на пару (подписчик, целевой пользователь)
4. Используем related_name для удобного доступа из модели User

Пример использования:
```python
# Подписаться
Subscription.objects.create(
    subscriber=request.user,
    target_user=target_user
)

# Отписаться
Subscription.objects.filter(
    subscriber=request.user,
    target_user=target_user
).delete()

# Получить подписчиков
user.subscribers.all()

# Получить подписки
user.subscriptions.all()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы