Я тестирую свой API через Postman и использую Django Rest Framework, загружаю файл и другие данные.
Я хочу загрузить файл и другие данные через postman, он сохраняет файл, но он пустой [].
Это мой BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(file))))
)MEDIA_ROOT = os.path.join(BASE_DIR, 'media') &
MEDIA_URL = '/media/'
model.py
class ServiceProjectAnswer(models.Model):
project = models.ForeignKey(ServiceProject, on_delete=models.DO_NOTHING,
related_name='project_answers')
question = models.ForeignKey(ServiceQuestion, on_delete=models.DO_NOTHING,
related_name='project_questions')
answer = models.CharField(max_length=500, blank=True, null=True)
class Meta:
db_table = "pm_service_project_answer"
verbose_name = 'service project answer'
verbose_name_plural = 'service project answers'
def project_files(instance, filename):
#file will be uploaded to MEDIA_ROOT/epc/projects/<project_id>/filename
return 'epc/projects/{0}/{1}'.format(instance.answer.project.id, filename)
class AnswerAttachments(models.Model):
# answer = models.ForeignKey(ServiceProjectAnswer, on_delete=models.DO_NOTHING,
related_name='answer_attachments')
answer = models.ForeignKey(ServiceProjectAnswer, on_delete=models.DO_NOTHING,
related_name='attachement')
attachement = models.FileField(upload_to=project_files, blank=True, null=True)
class Meta:
db_table = 'pm_answer_attachment'
verbose_name = 'answer attachement'
verbose_name_plural = 'answer attachements'
serializer.py
Это сериализатор вложений
class AnswerAttachmentsSerializer(serializers.ModelSerializer):
class Meta:
model = AnswerAttachments
fields = '__all__'
Это сериализатор ответов, из которого я сохраняю ответ и вложение
class ServiceProjectAnswerSerializer(serializers.ModelSerializer):
attachement = AnswerAttachmentsSerializer(many=True)
def create(self, validated_data):
attachement = validated_data.pop('attachement')
answer = ServiceProjectAnswer.objects.create(**validated_data)
attachment = AnswerAttachments.objects.create(answer=answer, attachement=attachement)
return answer
class Meta:
model = ServiceProjectAnswer
fields = ('project', 'question', 'answer', 'attachement')
Это мое мнение
class ServiceProjectAnswerViewSet(viewsets.ModelViewSet):
model = ServiceProjectAnswer
serializer_class = ServiceProjectAnswerSerializer
parser_classes = (MultiPartParser, FormParser,)
Это мой ответ в посте man
{
"project": 1,
"question": 3,
"answer": "My name is vikrant patil",
"attachement": [
{
"id": 21,
"attachement": "http://localhost:8000/media/%5B%5D",
"answer": 873
}
]
}
Пожалуйста, может ли кто-нибудь сказать мне, почему не отображается местоположение моего файла и что я делаю неправильно. Спасибо.