【问题标题】:DJango - How To pass the full model object as new field in serializerDJango - 如何在序列化程序中将完整模型对象作为新字段传递
【发布时间】:2021-05-25 10:03:18
【问题描述】:

我想将完整的 Artist 模型对象传递给序列化程序,因此我创建了一个新字段 serializers.SerializerMethodField 并在其中传递了 Artist 对象。但我得到了错误。

getattr(): attribute name must be string
class ArtistSerializer(serializers.ModelSerializer):
    similar_artists = serializers.SerializerMethodField(Artist.objects.all())

    class Meta:
        model = Artist
        fields = ('id', 'artist_name', 'albums', 'similar_artists')

我想我完全错了。那么有没有办法通过带有手动字段的序列化程序在单个对象中传递所有值或所有艺术家。

我想在序列化器中实现类似的东西。

 {
        "id": 1,
        "albums": [
            {
                "id": 1,
                "album_name": "Fearless (Taylor's Version)"
            },
            {
                "id": 7,
                "album_name": "Reputation"
            },
            {
                "id": 8,
                "album_name": "1989"
            }
        ],
        "artist_name": "Taylor Swift",
        "similar_artists": [
           {
              Artist Object
           }
         ]
 
    },

模特艺术家

class Artist(models.Model):
    artist_name = models.CharField(max_length=100)
    album = models.CharField(max_length=1000)
    
    def __str__(self):
        return self.artist_name 

【问题讨论】:

    标签: python arrays django object django-rest-framework


    【解决方案1】:
    class ArtistSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Artist
            fields = ('id', 'artist_name', 'albums',)
    
    
    class ArtistSimilarSerializer(serializers.ModelSerializer):
        similar_artists = serializers.SerializerMethodField()
    
        def get_similar_artists(self, artist):
            queryset = Artist.objects.all()
            return ArtistSerializer(queryset, many=True).data
    
    
        class Meta:
            model = Artist
            fields = ('id', 'artist_name', 'albums', 'similar_artists')
    

    试试这个

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 1970-01-01
      • 2016-08-23
      • 2016-04-11
      • 2016-09-24
      • 2016-04-12
      • 2019-03-07
      • 2011-04-24
      • 1970-01-01
      相关资源
      最近更新 更多