问题描述
我想要这样的输出。我的任务是使用RestFawork完成5种以上的嵌套类型模型和所有CRUD方法。如果有人知道与我分享答案的话。
{
"id": 1,"first_name": "John 1","last_name": "Robert 1","instrument": "KeyBoard","album_musician": [
{
"id": 3,"artist": 1,"name": "Test robert","release_date": "2020-09-16","num_stars": 400
"Language": [
{
"Original": "English","dubbed": "Tamil"
}
]
}
]
}
在此代码中,我仅执行了Sigle嵌套框架。 我的模型。py
Serializer.py 在此序列化中,我使用了CRUD方法
class AlbumSerializer(serializers.ModelSerializer):
class Meta:
model = Album
fields = ('id','artist','name','release_date','num_stars')
class MusicianSerializer(serializers.ModelSerializer):
album_musician = AlbumSerializer(many=True)
class Meta:
model = Musician
fields = ('id','first_name','last_name','instrument','album_musician')
lookup_field=id
def create(self,validated_data):
albums_data = validated_data.pop('album_musician')
musician = Musician.objects.create(**validated_data)
for album_data in albums_data:
Album.objects.create(artist=musician,**album_data)
return musician
def update(self,instance,validated_data):
albums_data = validated_data.pop('album_musician')
albums = (instance.album_musician).all()
albums = list(albums)
instance.first_name = validated_data.get('first_name',instance.first_name)
instance.last_name = validated_data.get('last_name',instance.last_name)
instance.instrument = validated_data.get('instrument',instance.instrument)
instance.save()
for album_data in albums_data:
album = albums.pop(0)
album.name = album_data.get('name',album.name)
album.release_date = album_data.get('release_date',album.release_date)
album.num_stars = album_data.get('num_stars',album.num_stars)
album.save()
return instance
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)