簡體   English   中英

如何使用 Django Rest Framework PrimaryKeyRelatedField 反序列化主鍵數組

[英]How to deserialize an array of primary keys with Django Rest Framework PrimaryKeyRelatedField

我在設置序列化程序時遵循了文檔

class PlaylistSerializer(serializers.ModelSerializer):
    songs = serializers.PrimaryKeyRelatedField(queryset=Song.objects.all(), many=True, allow_empty=True, required=False)

    class Meta:
        model = Playlist
        fields = ['id', 'name', 'songs', 'created_at']

如果我在 django 管理員的播放列表中添加幾首歌曲並發送獲取請求,我會得到我想要的結果。

{
    "id": 4,
    "name": "teszt3",
    "songs": [
        351,
        350
    ],
    "created_at": "2022-01-14T14:04:36.238350Z"
}

但我想使用類似的歌曲主鍵列表創建或更新播放列表。 如果我使用此正文發送 POST 請求:

{
    "name": "test2",
    "songs": [350, 351]
}

我收到此錯誤:

Incorrect type. Expected pk value, received str

如果歌曲字段中只有一個數字(主鍵),它可以工作,但我想一次創建包含多首歌曲的播放列表。 有沒有辦法解析該數組,或者我該如何解決這個問題?

您的模型或端點可能有一些錯誤。 由於您沒有提供該信息,因此這是一個與您的序列化程序完全兼容的工作示例。

模型.py

class Song(models.Model):
    pass


class Playlist(models.Model):
    name = models.CharField(max_length=50)
    songs = models.ManyToManyField(Song)
    created_at = models.DateTimeField(auto_now_add=True)

視圖.py

class CreatePlaylist(CreateAPIView):
    serializer_class = PlaylistSerializer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM