drf文件上傳下載示例

model.py

from django.db import models

# Create your models here.
class FileModel(models.Model):
    file_name = models.CharField(max_length=50, verbose_name='桶名', help_text='桶名')
    file_path = models.CharField(max_length=200, default='', verbose_name='文件路徑', help_text='文件路徑')
    file = models.FileField(verbose_name='文件', upload_to='file/%Y%m%d')
    create_dt = models.DateTimeField(auto_now_add=True, verbose_name='创建时间', help_text='创建时间')
    modify_dt = models.DateTimeField(auto_now=True, verbose_name='修改时间', help_text='修改时间')

    def __str__(self):
        return self.file_name

view.py

class FileViewSet(ModelViewSet):
    parser_classes = (MultiPartParser,)#為swagger能夠測試出是上傳文件
    queryset = FileModel.objects.all()
    serializer_class = FileSerializer

Serializer

class FileSerializer(serializers.ModelSerializer):
    class Meta:
        model = FileModel
        fields = "__all__"
        read_only_fields = ('file_name','file_path')
    def validate(self, attrs):
        getaction = self.context['view'].action
        if getaction == 'create':
            obj = FileModel.objects.filter(file_name=attrs['file'].name)
            if obj:
                raise serializers.ValidationError('存在相同文件名')
            else:
                return attrs

    def create(self, validated_data):
        validated_data['file_name'] = validated_data['file'].name
        return super().create(validated_data)

最後別忘了,setting.py批配置文件媒體和,媒體文件的路由註冊

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值