Django Rest - размещение данных и файлов

У меня есть две модели следующего вида:

class Tool(...):
    name = models.CharField(unique=True, ...)

class Dataset(...):
    file = models.FileField(...)
    tool = models.ForeignKey(...)

Я хочу отправить запрос на почту так, чтобы я мог создать Dataset экземпляр, загрузить файл и указать, к какому Tool относится данный экземпляр. Кроме того, было бы идеально, если бы я мог использовать Tool имя (которое является уникальным) при отправке post-запроса.

До сих пор я могу успешно загрузить файл, если удалю инструмент из DatasetSerializer. Но когда я добавляю инструмент в DatasetSerializer, я получаю ошибку 400 Bad Request без каких-либо подробностей в консоли.

Вот мои сериализаторы и файлы представления:

serializers.py

class ToolSerializer(serializers.ModelSerializer):
       ...
        
class DatasetSerializer(serializers.ModelSerializer):
    
    tool = ToolSerializer()
    
    class Meta:
        model = models.Dataset
        fields = ['tool', 'file', ...]

views.py

from rest_framework.parsers import MultiPartParser

class DatasetViewSet(viewsets.BaseModelViewSet):
    
    parser_classes = [MultiPartParser]
    ...

А вот запрос, который я пытаюсь выполнить:

# I am using the tool id here, but would prefer to use the name
requests.post(
    ...
    data = {
        'tool' : 1 
    },
    files = {
        'file' : open('file/path','rb')
    }
)
Вернуться на верх