【问题标题】:How to upload image file in django related to a perticular user only如何在 django 中仅上传与特定用户相关的图像文件
【发布时间】:2019-07-10 05:56:37
【问题描述】:

我正在尝试在 Django 中上传文件,以便上传的文件链接到外键。即如果我上传一个文件,那么在数据库中它应该反映它与哪个数据库主题相关

这是我的views.py文件:

def pod_upload (request, pk):
    lr_object = get_object_or_404(LR, id=pk)

    if request.method == 'POST':
        form = UploadPODform(request.POST, request.FILES)
        form.lr_connected = lr_object
        form.save()

        if form.is_valid():
            form.lr_connected = lr_object
            form.save()
            return redirect('home')
    else:
        form = UploadPODform()
        form.lr_connected = lr_object


    return render(request, 
'classroom/suppliers/model_form_upload.html', {'form': form})

这是我的 forms.py 文件:

class UploadPODform(forms.ModelForm):
    class Meta:
        model = Uploaded_pod
        fields = ('document',)

        def __init__ (self, *args, **kwargs):
            super(UploadPODform, self).__init__(*args, **kwargs)  # 
self.fields['lr_connected'].required = False

这是我的 models.py 文件:

class Uploaded_pod(models.Model):
    document = models.FileField(upload_to='pods/')
    lr_connected = models.ForeignKey(LR, on_delete=models.CASCADE, 
related_name='lr_pod')

我希望如果某些用户上传了一个文件,那么它必须相对于 LR 对象进行保存。

【问题讨论】:

    标签: python django django-models django-forms django-file-upload


    【解决方案1】:

    你可以这样做:

    def image_path(instance, filename):
        return '/'.join(['uploads', instance.lr_connected.pk, filename])
    
    
    class Uploaded_pod(models.Model):
        document = models.FileField(upload_to=image_path)
    

    【讨论】:

    • 您能详细说明一下吗?我们应该在文件名中输入什么?
    • 这个文件名应该是什么?你能详细说明一下吗? @ruddra
    • @chirag 文件名是此函数的默认参数,您无需为此添加任何内容。 filename 是您要上传的文件的实际文件名
    猜你喜欢
    • 2022-11-28
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    相关资源
    最近更新 更多