В Django, для определения того, подписан ли один пользователь на другого, можно использовать модель подписки и связанные с ней методы.
Прежде всего, необходимо определить модель для представления подписки. Модель может выглядеть примерно так:
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) class Meta: unique_together = ('subscriber', 'target_user')
В этом примере модель Subscription
имеет два внешних ключа на модель User
. Первый внешний ключ subscriber
представляет пользователя, который подписывается, а второй внешний ключ target_user
представляет пользователя, на которого подписываются. Мета-класс unique_together
гарантирует, что каждый пользователь может быть подписан только один раз на другого пользователя.
Теперь, чтобы определить, подписан ли один пользователь на другого, вы можете использовать следующий код:
def is_subscribed(subscriber, target_user): return Subscription.objects.filter(subscriber=subscriber, target_user=target_user).exists()
Это функция is_subscribed
, которая принимает двух пользователей в качестве параметров и возвращает True
, если первый пользователь подписан на второго, и False
в противном случае. Она использует метод filter
для проверки наличия записи подписки с соответствующими значениями subscriber
и target_user
и метод exists
для проверки, существует ли запись подписки.
Вы можете вызвать эту функцию следующим образом:
subscriber = User.objects.get(id=1) # получение экземпляра пользователя, который подписывается target_user = User.objects.get(id=2) # получение экземпляра пользователя, на которого подписываются if is_subscribed(subscriber, target_user): print('Пользователь подписан') else: print('Пользователь не подписан')
Обратите внимание, что в приведенном выше примере используется идентификатор (id
), чтобы получить экземпляры пользователей для проверки подписки. Вы можете использовать другой идентификатор, такой как имя пользователя, вместо этого.
Надеюсь, это поможет вам определить, подписан ли один пользователь на другого в Django. Если у вас есть дополнительные вопросы, не стесняйтесь задавать!