Как отправить post-запрос в Django Rest Framework, где ключ содержит список json-объектов?

Я новичок в Django Rest Framework и в самом django. Я хочу отправить запрос, в котором ключ имеет список объектов. Пока что я создал модель User_parameter и передаю ее в качестве внешнего ключа. Я потерялся и не знаю, что делать дальше. Нужно ли мне переопределить create() в User_Parameters_Serializerserializer или что-то совершенно другое?

Я добавил код для моих models.py, serializer.py, представления на основе функций, где я обрабатываю запрос на пост, и желаемый контур запроса на пост.

Спасибо, что уделили мне время. Я очень ценю это.

# The post request I want to send looks like this:

{
           "model_path": "some path",
           "data_path": "some path for csv",
           "sep": ",",
           "target_column": "target_column",
           "label_column": "lable_column",
           "function_names": "some strings",
           "user_params": [{
                              "standard_deviation": between[1-3], 
                              "direction": 0 OR 1, 
                              "feature_list": "some strings"
                           }] 
}

#models.py 

class User_Parameters(models.Model):
    def validate_standard_deviation_number(value):
        if value not in range(1,4):
            raise ValidationError(
            _('%(value)s is not in range: [1-3]'),
            params={'standard deviation': value},
        )
    
    def validate_direction(value):
        #### 0 - Negative 
        #### 1 - Positive

        if value not in range(0,2):
            raise ValidationError(
            _('%(value)s needs to be either 0 (Negative) or 1 (Positive)'),
            params={'direction': value},
        )
    
    standard_deviation = models.IntegerField(default=1, validators=[validate_standard_deviation_number])
    direction = models.IntegerField(default=1, validators=[validate_direction])
    feature_list = models.CharField(default='', max_length=3000)

    
    def __str__(self):
        return "std dev: %s,  dir: %s, feature list: %s" % (self.standard_deviation, self.direction, self.feature_list)


class Machine_Learning_Test_Engine(models.Model):
    model_path = models.CharField(default='', max_length = 3000)
    data_path = models.CharField(default='', max_length = 3000)
    sep = models.CharField(default='', max_length = 3000)
    target_column = models.CharField(default='', max_length = 3000)
    label_column = models.CharField(default='', max_length = 3000)
    function_names = models.CharField(default='', max_length=3000)
    user_params = models.ForeignKey(User_Parameters, on_delete=models.CASCADE)
#serializer.py

class User_Parameters_Serializer(serializers.ModelSerializer):
    class Meta:
        model = User_Parameters
        fields = '__all__'


class MLTE_Serializers_Model(serializers.ModelSerializer):
    class Meta:
        model = Machine_Learning_Test_Engine
        fields = '__all__'
@api_view(['POST'])
def mlte_reqeust(request):
    if request.method == 'POST':
        serializer  = MLTE_Serializers_Model(data = request.data)

        if serializer.is_valid():
            serializer.save()
            global mlte 
        
            mlte = MLTE(serializer.data['model_path'], serializer.data['data_path'],serializer.data['sep'], serializer.data['target_column'],serializer.data['label_column'])


            functions = str(serializer.data['function_names']).split(",")
           
            ### I have to pass the ```{"user_param":[{A1}]}``` as the argument of ```generate_data()```.

            mlte.generate_data(functions)

            json_data_pandas = pandas.DataFrame.to_json(mlte.data.head())

            return Response(json_data_pandas, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

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