Django ManyToManyField获取字段'id'期望得到一个数字,但得到b'x89



我想在Django中上传多个文件。下面的代码得到错误Field 'id' expected a number but got b'x89PNGrn'。我想使用ManyToManyField作为FileField。求你了,我需要解决办法。如有任何帮助,我将不胜感激。

models.py

class FileModel(models.Model):
filename = models.FileField(upload_to='files/')
class FileUploadModel(models.Model):
file = models.ManyToManyField(FileModel)

froms.py

class FileUploadingForm(forms.ModelForm):
file = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}), required=False)
def __init__(self, *args, **kwargs):
super(FileUploadingForm, self).__init__(*args, **kwargs)
class Meta:
model = FileUploadModel
fields = ['file']

views.py

def uploading_view(request):
if request.method == "POST":
form = FileUploadingForm(request.POST, request.FILES)
if form.is_valid():
# post = form.save(commit=False)
for files in request.FILES.getlist("filename"):
f = FileModel(filename=files)
f.save()
form.save()
return HttpResponse('success')
else:
form = FileUploadingForm()
return render(request, 'uploading.html', {'form': form})

<form action="." method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{form.as_p}}
<button type="submit">Submit</button>
</form>

你不能这样保存数据f = FileModel(filename=files)

试试这个

for files in request.FILES.getlist("filename"):
f = FileModel.objects.create(filename=files)
f.save()

阅读https://docs.djangoproject.com/en/3.1/topics/db/models/

最新更新