DRF-如何在模型序列化程序的创建方法中更新单个字段
DRF-How to update single field in create method of model serializer
我想创建除图像之外的所有字段 field.then,我想从该字段更新图像。如何在创建方法中做到这一点???
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)
这是我的创建方法 我如何更新 logo_filename
字段???
这是我的模特,
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
创建organization
后,您可以这样做:
image_data = validated_data.pop('logo_filename', None)
if image_data and organization:
organization.logo_filename = image_data
organization.save()
我想创建除图像之外的所有字段 field.then,我想从该字段更新图像。如何在创建方法中做到这一点??? 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)
这是我的创建方法 我如何更新 logo_filename
字段???
这是我的模特, 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
创建organization
后,您可以这样做:
image_data = validated_data.pop('logo_filename', None)
if image_data and organization:
organization.logo_filename = image_data
organization.save()