django - 使用 Django Restframework 和 Mongodb 进行多嵌套
问题描述
我想要这样的输出。我的任务是使用 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"
}
]
}
]
}
在这段代码中,我只做了单一嵌套框架。我的模型.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
解决方案
推荐阅读
- r - 为什么运行此命令时会出现“级别”?
- bash - bash + cmd :将一个命令输出传递给第二个命令
- javascript - 父组件在父状态更改时不必要地重新渲染子组件
- java - 有没有办法从 MainClass 更改创建用户的值?
- javascript - 如何显示带有样式的javascript字符串
- h2o - 在 Windows 中的水流中构建模型,在 AIX 服务器上使用?非程序员的帮助
- swift - 无法将类型“(JournalListViewController)->()-> JournalListViewController”的值分配给类型“JournalListViewController?”
- python - 如何修复'AttributeError:'dict'对象没有属性'code'
- python - Python Turtle,更改可见部分
- c# - 在 C# 中使用 Tesseract