django-rest-framework - Django REST 模型 Model.objects.create 函数的参数
问题描述
需要知道 Model.objects.create 函数的参数。这个例子来自这个链接:https ://www.django-rest-framework.org/api-guide/relations/#nested-relationships 。在这一行 Track.objects.create(album=album, **track_data)
是什么album=album
?我认为专辑的右侧分配值Album.objects.create(**validated_data)
是左侧专辑。根据文档,它是 Model 字段。但模特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
被调用的专辑中有一个 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>
这暗示了我在说什么。如果仅仅是因为缺少该字段,则没有字段album
的事实会引发错误。因此,您需要明确地包含它。TrackSerializer
Track.objects.create(**track_data)
album
推荐阅读
- ios - 如何在颤振插件上使用“ReplayKit2 - 广播上传扩展”
- reactjs - 最简单的 React Router 用例不起作用 - 路由不会渲染
- r - 将 R 数据帧转换为命名列表时如何省略“NA”
- open-policy-agent - 使用 opa eval 命令评估文件夹中的多个文件
- python - Ansible:使用新的随机字符串将元素添加到字典列表中
- r - 使用 pivot_wider 得到真或假
- sqlite - sqlite - 使用外键链接两个数据库表
- r - 按列中的条件总结 - R 中的数据框
- rest - 特定子数据类别的 REST API 端点命名
- django - Django REST API - 具有不同读写格式的序列化程序?