Итак, я создаю систему последователей, но есть проблема. Все исправно работает. но в последовательном сериализаторе мне нужны имя пользователя и другие сведения о пользователях.
models.py
class Follow(models.Model):
user = models.OneToOneField(User,related_name="user" ,on_delete=models.CASCADE)
''' to obtain user ' eeee = User.objects.first() , eeee.user' '''
following = models.ManyToManyField(User,related_name='following_user',blank=True)
''' to obtain followers ' eeee.following_user.all()' '''
''' to obtain following ' eeee.user.following.all()' '''
def __str__(self):
return self.user.username
В следующем поле user.following.all () - используется для получения пользователя в поле manytomany request.user и following_user.all () используется для получения всех пользователей, которые добавили request.user в свои следующее поле.
serializers.py
class FollowerSerializer(ModelSerializer):
user = UserSerializer(many=False)
follower = SerializerMethodField()
class Meta:
model = Follow
fields = ('user','follower')
def get_follower(self, obj):
context = self.context
request = context.get("request")
return request.user.following_user.all().values()
Здесь я сериализую всех пользователей, которые добавили request.user в свое следующее поле
views.py
class FollowerView(RetrieveAPIView):
queryset = Follow.objects.all()
serializer_class = FollowerSerializer
permission_classes = [IsAuthenticated]
lookup_field = 'id'
api
{
"user": {
"name": "eeee"
},
"is_follower": [
{
"id": 2,
"user_id": 9
},
{
"id": 5,
"user_id": 16
},
{
"id": 3,
"user_id": 10
}
]
}
Это api, который я получаю для всех пользователей, которые добавили request.user в свой следующий список. проблема здесь в том, что я получаю pk пользователя из ключа user_id . Но я хочу, чтобы там было имя пользователя и другая информация, такая как адрес электронной почты, полное имя пользователя, у которого есть этот первичный ключ. Итак, как я могу этого добиться?