Встречается на 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()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы