Я использую django-rest-framework и работаю над приложением, в котором у меня есть модуль User по умолчанию, затем UserProfile, чтобы расширить его, и пытаюсь реализовать функцию «Избранное», и по этой причине я добавил дополнительную таблицу Favorites.
Итак, есть мой модуль UserProfile:
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
...
, и есть мой любимый модуль:
class Favorite(models.Model):
user = models.ForeignKey(User, related_name='user_favorite', on_delete=models.CASCADE)
song = models.ForeignKey('Song', related_name='song_favorite', on_delete=models.CASCADE)
Я планирую добавить еще одно поле в избранное для фильмов.
Есть мои сериализаторы:
class FavoriteSerializer(serializers.ModelSerializer):
class Meta:
model = Favorite
fields = [
'user',
'song'
]
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
"id",
"email",
"first_name",
"last_name",
"username",
"is_active"
)
class UserProfileSerializer(serializers.ModelSerializer):
user = UserSerializer(required=True)
favorite = FavoriteSerializer(many=True, read_only=True)
class Meta:
model = UserProfile
fields = '__all__'
...
У меня также есть некоторая функция создания в UserProfileSerializer
, но я не думаю, что она уместна в этом случае.
IЯ пытался поместить эту часть favourite = FavoriteSerializer (many = True, read_only = True) в UserSerializer
, но результат такой же.отобразить все поля, но у меня нет любимых в моем ответе!Там нет ошибки, но он просто пропустил это поле
мой взгляд на эту часть выглядит так:
class UserRetrieve(generics.RetrieveAPIView):
lookup_field = 'user'
serializer_class = UserProfileSerializer
model = UserProfile
queryset = UserProfile.objects.all()
и urls.py
path('api/users/<int:user>', views.UserRetrieve.as_view(),
name='user_retrieve'),
, поэтому яожидайте увидеть что-то вроде этого:
{
"user": {
"id": 111,
"email": "4@email.com",
"first_name": "John",
"last_name": "Doe",
"username": "4@email.com",
"is_active": true
},
...
"favorite": [
{
"user": 1,
"song": 1
},
....
]
}
Но в моем ответе нет этой "любимой" части.Что я делаю не так и как мне получить список любимых песен?