fix embedded file upload

This commit is contained in:
j3d1 2023-11-20 20:09:58 +01:00
parent aa0bb9fd0d
commit 27589a09bd
4 changed files with 76 additions and 19 deletions

View file

@ -43,13 +43,14 @@ class ContainerViewSet(viewsets.ModelViewSet):
class ItemSerializer(serializers.ModelSerializer):
dataImage = serializers.CharField(write_only=True, required=False)
cid = serializers.SerializerMethodField()
box = serializers.SerializerMethodField()
file = serializers.SerializerMethodField()
class Meta:
model = Item
fields = ['cid', 'box', 'uid', 'description', 'file']
fields = ['cid', 'box', 'uid', 'description', 'file', 'dataImage']
read_only_fields = ['uid']
def get_cid(self, instance):
@ -72,13 +73,15 @@ class ItemSerializer(serializers.ModelSerializer):
return super().to_internal_value(data)
def validate(self, attrs):
attrs.pop('dataImage', None)
return super().validate(attrs)
def create(self, validated_data):
if 'dataImage' in validated_data:
file = File.objects.create(data=validated_data['dataImage'], iid=validated_data['iid'])
file = File.objects.create(data=validated_data['dataImage'])
validated_data.pop('dataImage')
item = Item.objects.create(**validated_data)
item.files.set([file])
return item
return Item.objects.create(**validated_data)
def update(self, instance, validated_data):
@ -87,8 +90,9 @@ class ItemSerializer(serializers.ModelSerializer):
validated_data['returned_at'] = datetime.now()
validated_data.pop('returned')
if 'dataImage' in validated_data:
file = File.objects.create(data=validated_data['dataImage'], iid=instance.iid)
file = File.objects.create(data=validated_data['dataImage'])
validated_data.pop('dataImage')
instance.files.add(file)
return super().update(instance, validated_data)