前提・実現したいこと
DjangoRestFrameworkのCreateAPIViewを利用し、Project登録時にVideoを同時に登録したいです。
1つのJSONファイルから複数テーブルへの登録はどのようにすれば可能でしょうか?
下記ページを参考にしようとしたのですが、Serializerのデータ作成方法がわかりませんでした。
https://teratail.com/questions/118884
該当のJSONファイル例
JSON
1[ 2 { 3 "title": "apitest", 4 "video": { 5 "video": "hogehoge.mp4" 6 }, 7 { 8 "video": "hogehoge2.mp4" 9 } 10 } 11]
該当のソースコード
Python
1[view.py] 2class ProjectCreateAPIView(CreateAPIView): 3 serializer_class = ProjectCreateSerializer
Python
1[serializers.py] 2class ProjectCreateSerializer(serializers.ModelSerializer): 3 video = SerializerMethodField() 4 class Meta: 5 model = Project 6 fields = [ 7 "title", 8 "video", 9 ] 10 11 # videoの情報をシリアライズする 12 def get_video(self, obj): 13 return VideoCreateSerializer() 14 15class VideoCreateSerializer(serializers.ModelSerializer): 16 class Meta: 17 model = Video 18 fields = [ 19 'video', 20 ]
Python
1[models.py] 2class Project(models.Model): 3 title = models.CharField(max_length=100) 4 5 def __str__(self): 6 return self.title 7 8 class Meta: 9 db_table = 'Project' 10 11class Video(models.Model): 12 project = models.ForeignKey(Project, on_delete=models.CASCADE) 13 video = models.FileField(upload_to=get_upload_to, null=True) 14 created_at = models.DateField(default=timezone.now) 15 16 class Meta: 17 db_table = 'Video'
VideoCreateSerializer()を変数に格納し、printした結果
VideoCreateSerializer(): video = FileField(allow_null=True, max_length=100, required=False) three_dimensional_flg = BooleanField(required=False)
発生している問題・エラーメッセージ
TypeError: Object of type VideoCreateSerializer is not JSON serializable
試したこと
ProjectCreateSerializerでvideo = SerializerMethodField()とget_videoを削除
↓
django.core.exceptions.ImproperlyConfigured: Field name `video` is not valid for model `Project`.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/19 05:55