Viji Lakshmi
Viji Lakshmi

Reputation: 137

DRF-How to update single field in create method of model serializer

I want to create all the field except image field.then, I want to update image from that field. How to do this in create method??? serializers.py

def create(self, validated_data):
        loc_id = validated_data.pop("location")["id"]
        currency_id = validated_data.pop("base_currency")["id"]
        try:
            loc_obj = get_object_or_404(Location, id=loc_id)
            validated_data["location"] = loc_obj
            currency_object = get_object_or_404(Currency, id=currency_id)
            validated_data["base_currency"] = currency_object
            image_data = validated_data.pop('logo_filename')
            organization = Organization.objects.create(**validated_data)
            return organization
        except Exception as e:
            raise serializers.ValidationError(e)

its my create method how can i update logo_filename field???

here my models, models.py

def upload_to(instance, filename):
    # return '{filename}'.format(filename=filename)
    print(instance.__dict__)
    return 'organization/{instance}/logo/{filename}'.format(filename=filename,
                                                            instance=instance.pk)


class Organization(models.Model):
    code = models.CharField(max_length=25, null=False, unique=True)
    name = models.CharField(max_length=100, null=False)
    location = models.ForeignKey(Location, on_delete=models.RESTRICT)
    base_currency = models.ForeignKey(Currency, on_delete=models.RESTRICT)
    logo_filename = models.ImageField(_("Image"), upload_to=upload_to, null=True)

    def __str__(self):
        return self.name

Upvotes: 1

Views: 1777

Answers (1)

Manzurul Hoque Rumi
Manzurul Hoque Rumi

Reputation: 3094

After creating organization, you can do like this way:

image_data = validated_data.pop('logo_filename', None)
if image_data and organization:
    organization.logo_filename = image_data
    organization.save()

Upvotes: 1

Related Questions