Встречается на 1% собеседований по Python

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

Для реализации подписки пользователей друг на друга можно использовать отношение "многие ко многим" через промежуточную таблицу. Вот пример на 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
интервью вопросы и ответы