Django - как создать файл и сохранить его в поле в ModelSerializer - PullRequest
0 голосов
/ 25 января 2019
  • У меня есть модель с FileField, а именно file_test
  • . Я хочу вручную создать файл и назначить file_test в сериализаторе
  • Ниже приведен мой код, нужна помощь.Спасибо

    class Test(models.Model):
        file_test = models.FileField(storage=OverwriteStorage(),
                                  upload_to=_get_landmark_upload_path, max_length=100, blank=True)
    
    class TestSerializer(serializers.ModelSerializer):
        test = serializers.CharField(write_only=True, required=True)
    
        class Meta:
            model = Test
            fields = ('file_test','test')
    
        def save(self, *args, **kwargs):
            self.file_test.save('test.txt', ContentFile(self.validated_data['test']))
            return super().save(*args, **kwargs)
    
  • Или есть способ создать файл и присвоить его file_test?

  • пример в сериализаторе

    def save(self, *args, **kwargs):
        kwargs['file_test'] = ?????(how to create this file)
        return super().save(*args, **kwargs)
    

1 Ответ

0 голосов
/ 25 января 2019
  • Мне удалось бы решить проблему с помощью ContentFile
  • Посмотрите на пример ниже

    def save(self, *args, **kwargs):
        kwargs['file_test'] = ContentFile(
            self.validated_data['test'], name="test.txt")
        return super().save(*args, **kwargs)
    
...