Я пытаюсь сделать поле изображения необязательным в сериализаторе. Но это все еще не делает поле изображения необязательным. Мой код выглядит следующим образом:
Класс управления файлами загрузки фотографий:
class FileManager:
@staticmethod
def photo_path(instance, filename):
basefilename, file_extension = os.path.splitext(filename)
date = datetime.datetime.today()
uid = uuid.uuid4()
if isinstance(instance, User):
return f'profile_pic/{instance.email}/{uid}-{date}{file_extension}'
elif isinstance(instance, BlogPost):
print(file_extension)
return f'blog_pic/{instance.author.email}/{uid}-{date}{file_extension}'
Мой класс модели:
class BlogPost(models.Model):
'''
Manage Blog Posts of the user
'''
author = models.ForeignKey(get_user_model(),
on_delete=models.DO_NOTHING,
related_name='blog_author')
content = models.TextField(max_length=600, blank=True, null=True)
content_image = models.FileField(upload_to= FileManager.photo_path, null=True, blank=True)
is_approved = models.BooleanField(default=False)
updated_on = models.DateTimeField(auto_now_add=True)
timestamp = models.DateTimeField(auto_now_add=True)
def save(self, *args, **kwargs):
super(BlogPost, self).save(*args, **kwargs)
img = Image.open(self.content_image.path)
if img.height > 600 or img.width > 450:
output_size = (600, 450)
img.thumbnail(output_size)
img.save(self.content_image.path)
Мой класс сериализатора:
class BlogPostUserSerializer(serializers.HyperlinkedModelSerializer):
'''
Will be serializing blog data
'''
author = UserListSerializer(read_only=True)
content = serializers.CharField(required=False)
content_image = serializers.ImageField(required=False, max_length=None, allow_empty_file=True, use_url=True)
class Meta:
model = BlogPost
fields = (
'url',
'id',
'content',
'content_image',
'author')
def validate(self, data):
if not data.get('content') and not data.get('content_image'):
raise serializers.ValidationError({'message':'No-content or Content image were provided'})
return data
Текст ошибки:
ValueError в / forum / write-blog
Атрибут content_image не имеет связанного с ним файла.
Я прошел через Django Rest Framework Do c, но без помощи. Даже ответов других не работают, пожалуйста, помогите, я застрял.