Я тестирую свой 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
    }
]
}

Пожалуйста, может ли кто-нибудь сказать мне, почему не отображается местоположение моего файла и что я делаю неправильно. Спасибо.

Вернуться на верх