当前用户文件上传的Django动态初始值

问题描述

我一直在努力挣扎。我希望当前用户能够添加文件,而无需自己选择要上传的文件的用户。现在,我需要从列表中手动选择一个用户,以添加与其相关的文件。

预先感谢!

雨果

这是模型。py

from django.db import models
from django.contrib.auth.models import User

class Client(models.Model):
    user = models.OneToOneField(User,null=True,on_delete=models.CASCADE)
    name = models.CharField(max_length=100,null=True)


    def __str__(self):
        return self.name


class fichier4(models.Model):
    user = models.ForeignKey(Client,on_delete=models.CASCADE)
    file = models.FileField()
    date_created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.file

我的view.py代码

form3 = FichierUpload()
    
initial_data = {
    'user' : request.user
}  

    
if request.method == 'POST':      
    form3 = FichierUpload(request.POST or None,request.FILES,initial=initial_data)
        
    if form3.is_valid():
        form3.save()
        return redirect('allfiles')

forms.py

class FichierUpload(ModelForm):
    class Meta:
        model = fichier4
        fields = '__all__'

解决方法

不要添加您不希望用户填写表单的字段。

如果只想输入文件,则仅使用 file 字段创建一个表单,然后再添加用户。

def my_view(request,**kwargs):
    form  = FichierUpload(request.POST or None,request.FILES)

    if request.method == 'POST':
        file = form.save(commit=False)
        file.user = request.user
        file.save()

        # return your response

    # display your template
,

我真的很感谢您的帮助,但是它仍然对我不起作用(没有特定的错误消息)

这是我测试过的代码:

view.py

def filesadmin(request):    
    form3 = FichierUpload()
    
    form3 = FichierUpload(request.POST or None,request.FILES)    
    if request.method == 'POST':      
    
        file = form3.save(commit=False)
        file.user = request.user
        file.save()
        return redirect('allfiles')


context = {'filesadmin':filesadmin,'form2':form2,'fileuser':fileuser,'form3':form3}
return render (request,'accounts/dashboard.html',context)

forms.py

class FichierUpload(ModelForm):
    class Meta:
        model = fichier4
        
        fields = ['file']

dashboard.html

<div class="container">
    <div class="row">
        <div class="col">

        </div>
            <div class="col-9">
                <form action="" method="POST" enctype="multipart/form-data" >{% csrf_token %}
                    
                    {{form3}}
                    
                    <input type="submit" name="Submit" class="btn btn-primary">
                </form>
            </div>

            <div class="col">
                
            </div>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...