問題
PUTするたびに、FileFieldのファイルパスが消えてしまう
目的
DjangoRestFrameworkのAPIに、PUTメソッドで、Questionテーブルのデータをupdateしたい。
詳細
id, sentence, voiceのそれぞれのフィールドにすでにデータが入っている状態にて、
sentenceだけを変更して、ブラウザのGUI上でPUTメソッド送った際に、voiceフィールドに入っていたファイルパスが削除されてしまいます。
この状態だと、sentenceだけを変更したくても、毎回voiceのファイルもputしなくてはならないので、既存のファイルパスがPUTのたびに削除されないように修正したいです。
※ ファイルをputすれば、保存されます。
コード
- models.py
from django.db import models class Question(models.Model): id = models.AutoField(primary_key=True) sentence = models.CharField(max_length=255, null=True, blank=True) voice = models.FileField(upload_to='voice/', blank=True, null=True)
- views.py
from rest_framework import viewsets, filters from rest_framework.viewsets import ModelViewSet from .models import Questionn from .serializer import QuestionSerializer class QuestionTestViewSet(viewsets.ModelViewSet): queryset = Question.objects.all() serializer_class = QuestionSerializer
- serializer.py
from rest_framework import serializers from core.models import Question class QuestionSerializer(serializers.ModelSerializer): class Meta: model = Question fields = ('id', 'sentence', 'voice')
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。