【问题标题】:Django - how to create a file and save it to a field in ModelSerializerDjango - 如何创建文件并将其保存到 ModelSerializer 中的字段
【发布时间】:2019-06-18 23:46:16
【问题描述】:
  • 我有一个带有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)
    

【问题讨论】:

标签: django django-rest-framework


【解决方案1】:
  • 我设法通过使用 ContentFile 解决了这个问题
  • 看下面的例子

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

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    相关资源
    最近更新 更多