如何解决当前用户文件上传的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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。