django-rest-framework-recursive icon indicating copy to clipboard operation
django-rest-framework-recursive copied to clipboard

How deserializer data and save it in db?

Open heckad opened this issue 6 years ago • 1 comments

Store need

{
  'name': 'category 1',
  'children':[
    {'name': 'category 2'},
    {'name': 'category 3'},
  ]
}

I use djangorestframework and trying to write serializer for

class Category(MPTTModel):
    name = models.CharField(max_length=100)

    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

    class MPTTMeta:
        order_insertion_by = ['name']

I made it

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = ['id', 'name', 'children']
        read_only_fields = ['parents']

    # parent = serializers.ListField()
    children = RecursiveField('CategorySerializer', required=False, allow_null=True, many=True)

And I got the error TypeError: unhashable type: 'collections.OrderedDict'. It seems that the internal fields are not serialized.

heckad avatar Jul 25 '19 12:07 heckad

I think combining these two packages (django-mptt, drf-writable-nested) can solve your problem.

emxxjnm avatar Oct 30 '19 03:10 emxxjnm