特定于用户的上传Django 1.7

2024-10-01 15:39:05 发布

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

我得到这个错误“非空约束失败:myfiles_文档用户id" 我要做的是将文件附加到用户ForeignKey上,这样用户只能看到他们使用这个应用程序上传的内容django-file-form这里是项目的代码

你知道吗型号.py你知道吗

class Example2(models.Model):
    title = models.CharField(max_length=255)

class ExampleFile(models.Model):
    fs = FileSystemStorage(location=settings.MEDIA_ROOT)
    input_file = models.FileField(max_length=255, upload_to='uploads/%Y.%m.%d' , storage=fs)
    user = models.ForeignKey('auth.User')


    def get_upload_path(self,filename):
        return "static/uploads/"+str(self.user.id)+"/"+filename

你知道吗表单.py你知道吗

class BaseForm(FileFormMixin, django_bootstrap3_form.BootstrapForm):
    title = django_bootstrap3_form.CharField()


class MultipleFileExampleForm(BaseForm):
    input_file = MultipleUploadedFileField()

def save(self):
    example = Example2.objects.create(
        title=self.cleaned_data['title']
    )

    for f in self.cleaned_data['input_file']:
        ExampleFile.objects.create(
            input_file=f
        )

    self.delete_temporary_files()

你知道吗视图.py你知道吗

 class BaseFormView(generic.FormView):
    template_name = 'example_form.html'

 def get_success_url(self):
    return reverse('example_success')

 def form_valid(self, form):
    form.save()
    return super(BaseFormView, self).form_valid(form)    

class ExampleSuccessView(generic.TemplateView):
    template_name = 'success.html'

class MultipleExampleView(LoginRequiredMixin, BaseFormView):
    form_class = forms.MultipleFileExampleForm

Tags: django用户pyselfforminputreturntitle
1条回答
网友
1楼 · 发布于 2024-10-01 15:39:05

除非手动设置,否则外键不会自动设置为当前用户。这就是为什么会出现notnull约束错误。尝试如下修改form_valid方法:

def form_valid(self, form):
    form.instance.user = self.request.user
    ...

阅读Django's documentation on models and request.user 了解详细信息。你知道吗

相关问题 更多 >

    热门问题