在Djang中定义用于保存用户上载的文件的文件路径

2024-03-29 07:39:16 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一下我们是否有一个表单,其中包含一个由以下用户上传文件的字段:

class PoscastForm(forms.ModelForm):
    class Meta:
        fields = ("title", "message", "channel", "file", "tag")
        model = models.Podcast

    def __ini__(self, *args, **kwargs):
        user = kwargs.pop("user", None)
        super().__init__(*args, **kwargs)

        if user is not None:
            self.fields["channel"].queryset = (
                models.Channel.objects.filter(
                    pk__in = user.channels.value_list('channel__pk')
                )
            )

播客模式:

^{pr2}$

所以当一个用户上传他的附加文件,它将保存在我的项目根目录!如何改变方向路径? 此窗体的视图如下所示:

class CreatePodcast(LoginRequiredMixin, SelectRelatedMixin, 
generic.CreateView):
    fields = ("title", "message", "channel", "file", "tag")
    model = models.Podcast

   def form_valid(self, form):
       self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.save()
        return super().form_valid(form)

Tags: 用户selfformmessagefieldsmodelobjecttitle
1条回答
网友
1楼 · 发布于 2024-03-29 07:39:16

根据documentation,您可以在模型定义中定义文件路径

file = models.FileField(blank=True, null=True, default='', upload_to="your/path/")

另外,如果您定义了MEDIA_ROOT,则上载的文件将被发送到MEDIA_ROOT的子目录,该子目录定义为upload_to。有关详细信息,请参阅storage文档。在

用户也可以定义上传目录。根据文档:

^{pr2}$

相关问题 更多 >