У меня есть пользователь, следующий за системой, я хочу иметь возможность получать все сообщения / витрины людей, за которыми следует пользователь. Я смог реализовать это до такой степени.
ПРОБЛЕМА заключается в том, что вместо получения сообщений всех пользователей, следующих за ним, вместо этого он возвращает только сообщения одного пользователя и не возвращает все сообщения пользователя, за которыми следует человек.
с учетом models.py - модели пользователя, подписки и showcse (сообщения пользователя)
class User(AbstractBaseUser, PermissionsMixin):
username = None
email = models.EmailField(max_length=254, unique=True)
fullname = models.CharField(max_length=250)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
last_login = models.DateTimeField(null=True, blank=True)
date_joined = models.DateTimeField(auto_now_add=True)
slug = models.SlugField(max_length=255, unique=True, blank=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['fullname']
class FollowLog(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='followers')
followed_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,
related_name='following', null=True)
followed_on = models.DateTimeField(auto_now_add=True)
status = models.CharField(choices=FOLLOW_STATUS, default=FollowStatus.following.value, max_length=30)
updated_on = models.DateTimeField(auto_now=True)
unfollowed_on = models.DateTimeField(null=True)
blocked_on = models.DateTimeField(null=True)
class Showcase(models.Model):
title = models.CharField(max_length=50)
description = models.TextField(null=True)
skill_type = models.ForeignKey(Skill, on_delete=models.CASCADE)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING, related_name="Showcases")
content = models.TextField(null=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
voters = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="upvotes")
slug = models.SlugField(max_length=255, unique=True)
views.py , чтобы получить все сообщения пользователей, за которыми следует авторизоваться
class FollowerShowcasesView(generics.ListAPIView):
serializer_class = ShowcaseSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
current_user = self.request.user
followed_people = FollowLog.objects.filter(user=current_user).filter(status='following').values('followed_by')
return Showcase.objects.filter(user__in=followed_people).order_by('-created_on')
serializers.py
class ShowcaseDetaiedSerializer(serializers.ModelSerializer):
user = serializers.SlugRelatedField(read_only=True, slug_field='slug')
*some other things*
class Meta:
model = Showcase
exclude = ['updated_on', 'id']
Проблема заключается в том, что текущий зарегистрирован пользователь подписан на 2 пользователей
[
{
"user": "opeyemi-david-odedeyi-7ug3j0"
},
{
"user": "opeyemi-odedeyi-spniw5"
}
]
когда я пытаюсь получить сообщения пользователя, за которым следует вошедший в систему пользователь, я получаю только для первого пользователя "opeyemi-david-odedeyi-7ug3j0"
[
{
"user": "opeyemi-david-odedeyi-7ug3j0",
"created_on": "1 day ago",
"likes_count": 0,
"user_has_voted": false,
"slug": "love-over-everything-27l1ol",
"comment_count": 0,
"title": "Love over everything",
"description": "dsunfdlujnfiundlijndijnfdkjndfkjndfkjnfdjndfjunfdju",
"content": "jsdkjnsdkjndkhjnsdndskdsndsnsdjnkdsndskjndsjdsd",
"skill_type": 2
},
{
"user": "opeyemi-david-odedeyi-7ug3j0",
"created_on": "1 month ago",
"likes_count": 1,
"user_has_voted": true,
"slug": "lorem-ipsum-4ib02y",
"comment_count": 1,
"title": "lorem ipsum",
"description": "lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsum",
"content": "lorem ipsumlorem ipsumlorem ipsumlorem ipsum",
"skill_type": 1
}
]
проблема в том, что у второго пользователя также есть записи / витрины
[
{
"user": "opeyemi-odedeyi-spniw5",
"created_on": "8 hours ago",
"likes_count": 0,
"user_has_voted": false,
"slug": "consistency-s1v63n",
"comment_count": 0,
"title": "Consistency",
"description": "consistence is the key to success",
"content": "h,jhbjhbjhbjhbjh",
"skill_type": 1
}
]
пожалуйста, у кого-нибудь есть идея, почему он не возвращает витрины всех людей, за которыми он следует?