Python 如何在django中上载仅与特定用户相关的图像文件

Python 如何在django中上载仅与特定用户相关的图像文件,python,django,django-models,django-forms,django-file-upload,Python,Django,Django Models,Django Forms,Django File Upload,我正在尝试用Django上传一个文件,这样上传的文件就会链接到一个外键。i、 e.如果我上传了一个文件,那么在数据库中,它应该反映出它与哪个数据库主题相关 这是my views.py文件: def pod_upload (request, pk): lr_object = get_object_or_404(LR, id=pk) if request.method == 'POST': form = UploadPODform(request.POST, req

我正在尝试用Django上传一个文件,这样上传的文件就会链接到一个外键。i、 e.如果我上传了一个文件,那么在数据库中,它应该反映出它与哪个数据库主题相关

这是my 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})
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
class Uploaded_pod(models.Model):
    document = models.FileField(upload_to='pods/')
    lr_connected = models.ForeignKey(LR, on_delete=models.CASCADE, 
related_name='lr_pod')
这是我的forms.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})
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
class Uploaded_pod(models.Model):
    document = models.FileField(upload_to='pods/')
    lr_connected = models.ForeignKey(LR, on_delete=models.CASCADE, 
related_name='lr_pod')
这是我的models.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})
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
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对象保存该文件。

您可以这样做:

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@chiragfilename是此函数的默认参数,不需要为此放置任何内容。filename是您正在上载的文件的实际文件名