我有一個分為 3 個選項卡的表單,在選項卡 2 和選項卡 3 中,您必須分別上傳多個影像。我發現的關于它的資訊,大部分我不明白,而且我很容易看到,給我這個錯誤:
TypeError: Carro() got an unexpected keyword argument 'images'
你能幫我告訴我我做錯了什么嗎?謝謝
模型.py
class Carro(models.Model):
placas=models.CharField(max_length=255)
marca=models.CharField(max_length=255)
cliente= models.ForeignKey(Clientes, on_delete=models.SET_NULL, null=True)
fotosCarro=models.ImageField(null=True, upload_to="images/")
garantia=models.ImageField(null=True, upload_to="images/")
fecha_registros = models.DateTimeField(default=datetime.now, null=True)
def __str__(self):
return f'{self.placas} {self.marca}{self.cliente}{self.fotosCarro}{self.garantia}' \
f'{self.fecha_registros}'
表格.py
class CarroForm(forms.ModelForm):
class Meta:
model=Carro
fields = ['placas','marca','cliente','fotosCarro','garantia']
exclude = ['fecha_registros']
widgets = {
'placas': forms.TextInput(
attrs={
'class': 'form-control',
}
),
'marca': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'cliente': forms.Select(
attrs={
'class': 'form-select'
}
),
'fotosCarro':forms.FileInput(
attrs={
'class': 'type-file',
'multiple': True,
'id': 'file-input',
'onchange':'preview()',
}
),
'garantia':forms.FileInput(
attrs={
'class': 'type-file',
'multiple': True,
'id': 'file-inputz',
'onchange': 'previewz()',
# 'id':'pro-images',
# 'click': "$('#pro-images').click()",
}
),
'fecha_registros': forms.DateInput(
attrs={
'class': 'form-control',
}
),
}
視圖.py
def create_carros(request):
form = CarroForm(request.POST or request.FILES)
if request.method == "POST":
form = CarroForm(request.POST or request.FILES)
images = request.FILES.getlist('fotosCarro')
garantias = request.FILES.getlist('garantia')
for image in images:
Carro.objects.create(images=image)
for garantia in garantias:
Carro.objects.create(garantias=garantia)
images = Carro.objects.all()
garantias = Carro.objects.all()
return render(request, 'carros/carros-form-add.html', {'images': images,'garantias': garantias,'form':form})
uj5u.com熱心網友回復:
改變
Carro.objects.create(images=image)
到
Carro.objects.create(fotosCarro=image)
關鍵字引數必須與您在Carro類中定義的欄位匹配。
請注意,這將修復直接錯誤,但可能仍不會執行您想要的操作。另外,你在這里做的太多了。我建議您閱讀有關表單的更多資訊。如果您正確使用表單,您可以將視圖代碼簡化為:
def create_carros(request):
form = CarroForm(request.POST or request.FILES)
if request.method == "POST":
if form.is_valid():
form.save()
當表單無效并使用錯誤訊息呈現表單時,您還需要添加錯誤處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439422.html
