【发布时间】:2020-11-16 15:40:59
【问题描述】:
我正在学习 Django-Rest 框架。我想通过一个发布请求为我的Story 模型和File 模型创建一个对象实例。所以传入的数据包含一个标题和一个文件。然后我想创建一个带有标题的故事对象,并且图像字段包含对文件实例 id 的引用(fk)。在 File 模型中,使用传入的文件数据创建自己的 File 实例。
# File Model
class File(models.Model):
file = models.FileField(upload_to='audio_stories/', null=True, default='some_value')
# Story Model
class Story (models.Model):
title = models.CharField(max_length=100,blank=True)
image = models.ForeignKey(File,on_delete=models.CASCADE, blank=True, default=None)
# Story Serializer
class StoryCreateUpdateSerializer (serializers.ModelSerializer):
image = TestFileSerializer()
class Meta:
model = Story
fields = ('title','image')
def create(self, validated_data):
image = validated_data.pop('image')
title = validated_data.pop('title')
image_instance = File.objects.create(file=image)
story_instance = Story.objects.create(title=title, image=image_instance)
return story_instance
# File Serializer
class TestFileSerializer (serializers.ModelSerializer):
class Meta:
model = File
fields = ('__all__')
如果我通过 Postman 将表单数据发送到我的服务器,它会回复 "image": ["This field is required."]。如果这是一个明显的错误,我提前道歉。
感谢您的澄清。
【问题讨论】:
标签: python django django-rest-framework