Как предоставить данные json в запросе post api в django rest framework

#django #api #rest #frameworks

#django #API #rest #фреймворки

Вопрос:

Я новичок в Django rest Framework, пожалуйста, укажите мне, где я допустил ошибку, я хочу создать API, который принимает два аргумента

  1. имя cat (которое является полем char)
  2. поля cat (которые являются полем JSON)

Я хочу поместить динамические поля JSON, например, на клиента, чтобы они добавили данные 4 полей с парами ключей в JSON или любым количеством полей, я надеюсь, что вы все, ребята, поймете мой запрос.

Пожалуйста, помогите мне, я буду очень признателен за вашу помощь

Вот мой Views.py

     @api_view(['POST'])
    @parser_classes([JSONParser])
    def add_cateogry_with_fields(request, format=None):
        if request.method == "POST":
            insert_Serializers = AddCategoryWithFieldsSerializer(data=request.data)
            if insert_Serializers.is_valid():
                insert_Serializers.save()
                return Response(insert_Serializers.data, status=status.HTTP_201_CREATED)
            else:
                return Response(insert_Serializers.data, status=status.HTTP_400_BAD_REQUEST)
 

и вот класс сериализатора
serializer.py

     class AddCategoryWithFieldsSerializer(ModelSerializer):
        category_name = serializers.CharField(max_length=34)
        category_fields = serializers.JSONField()
    
        class Meta:
            model = CategoryModel
            fields = ('category_name', 'category_fields')
 

Model.py класс — это

     class CategoryModel(models.Model):
        category_id = models.AutoField(primary_key=True)
        category_name = models.CharField(max_length=255)
        category_fields = models.JSONField()
        parent_category = models.ForeignKey('self', on_delete=models.CASCADE, null=True)
    
        class Meta:
            db_table = 'category'
 

введите описание изображения здесь

Ответ №1:

данные JSON, которые вы передали, имеют завершающую запятую ( , ).

 {
    "category_name": "site",
    "category_fields": {
        "abc": "abc",
        "def": "def"
    }, # having comma here when there's nothing next to it will have error when parsed
}