Django REST模型.objects.create函数的参数



需要了解Model.objects.create函数的参数。此示例来自此链接:https://www.django-rest-framework.org/api-guide/relations/#nested-关系。在这一行中Track.objects.create(相册=相册,**Track_data(

什么是album=album?我认为专辑右边的赋值是Album.objects.create(**validated_data),但左边的专辑是什么。根据文档,它是"模型"字段。但模型Track和模型Album contains field都没有专辑`。

这是Album的默认型号名称吗?

class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['order', 'title', 'duration']
class AlbumSerializer(serializers.ModelSerializer):
tracks = TrackSerializer(many=True)
class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']
def create(self, validated_data):
tracks_data = validated_data.pop('tracks')
album = Album.objects.create(**validated_data)
for track_data in tracks_data:
Track.objects.create(album=album, **track_data)
return album

教程中没有明确说明,但假设Track中有一个名为album的ForeignKey字段,它引用了Album模型。

注意示例部分的第二个代码片段中的以下内容:

>>> album = Album.objects.create(album_name="The Grey Album", artist='Danger Mouse')
>>> Track.objects.create(album=album, order=1, title='Public Service Announcement', duration=245)
<Track: Track object>

这暗示了我的意思。如果只是Track.objects.create(**track_data),则TrackSerializer上没有字段album这一事实将引发错误,因为字段album将丢失。因此,您需要明确地包含它。

最新更新