Advertisement
Guest User

Untitled

a guest
Sep 20th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1. # MODEL
  2. def images_directory_path(instance, filename):
  3.     return 'images/client_id_{0}/{1}'.format(instance.client.id, filename)
  4.  
  5.  
  6. class Image(models.Model):
  7.     created = models.DateTimeField(auto_now_add=True)
  8.     updated = models.DateTimeField(auto_now=True)
  9.     client = models.ForeignKey('client.Client', related_name='client_image', on_delete=models.CASCADE)
  10.  
  11.     image_file = models.ImageField(upload_to=images_directory_path)
  12.  
  13. # SERIALIZER
  14. class ImageSerializer(serializers.ModelSerializer):
  15.     class Meta:
  16.         model = Image
  17.         read_only_fields = ['id', 'created', 'updated']
  18.         exclude = ('client',)
  19.  
  20.     def update(self, instance, validated_data):
  21.         fields = instance._meta.fields
  22.         exclude = ['id', 'created', 'updated', 'client']
  23.         for field in fields:
  24.             field = field.name.split('.')[-1]
  25.             if field in exclude:
  26.                 continue
  27.             setattr(instance, field, validated_data.get(field, getattr(instance, field)))
  28.         instance.save()
  29.  
  30.         if "client" in self.context.keys():
  31.             validated_data["client"] = self.context["client"]
  32.             if instance.client != validated_data["client"]:
  33.                 new_object = Image.objects.create(
  34.                     client=validated_data["client"],
  35.                     image_file=instance.image_file
  36.                 )
  37.                 instance.delete()
  38.                 instance = new_object
  39.                 return instance
  40.  
  41.         return instance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement