Как создать представление шаблона с 3 формами, две из которых загружают несколько изображений?
Я сделал 3 формы в одном шаблоне, в первой модели поля являются текстовыми вводами (работает и сохраняет данные), во второй модели это ввод для загрузки нескольких изображений (не работает и не сохраняет данные) и в третьей также для загрузки нескольких изображений (не работает и не сохраняет данные)
При создании представления я разделил три формы на одно представление, но только первая сохраняет данные, остальные нет. Даже если я захожу в /admin, то там нет кнопки ввода для сохранения изображений. Это заставляет меня думать, что я делаю что-то не так с моими представлениями, но я не знаю, что именно. вы можете помочь мне просмотреть код? Спасибо
models.py
class Carro(models.Model):
placas=models.CharField(max_length=255)
tipo=models.CharField(max_length=255)
cliente= models.ForeignKey(Clientes, on_delete=models.SET_NULL, null=True)
fecha_registros = models.DateTimeField(default=datetime.now, null=True)
def __str__(self):
return f'{self.placas} {self.tipo}{self.cliente}' \
f'{self.fecha_registros}'
class CarroImagenes(models.Model):
carro = models.ForeignKey(Carro, on_delete=models.SET_NULL, null=True)
fotosCarro=models.ImageField(null=True, blank=True, upload_to="images/")
def __str__(self):
return f'{self.fotosCarro}'
class GarantiaImagenes(models.Model):
carro = models.ForeignKey(Carro, on_delete=models.SET_NULL, null=True)
garantia=models.ImageField(null=True, blank=True, upload_to="images/")
def __str__(self):
return f'{self.garantia}'
forms.py
class CarroForm(forms.ModelForm):
class Meta:
model=Carro
fields = ['placas','tipo','cliente']
exclude = ['fecha_registros']
widgets = {
'placas': forms.TextInput(
attrs={
'class': 'form-control',
}
),
'tipo': forms.TextInput(
attrs={
'class': 'form-control'
}
),
'cliente': forms.Select(
attrs={
'class': 'form-select'
}
),
'fecha_registros': forms.DateInput(
attrs={
'class': 'form-control',
}
),
}
class CarroImagenesForm(forms.ModelForm):
class Meta:
model = CarroImagenes
fields = ['fotosCarro']
widgets = {
'fotosCarro':forms.FileInput(
attrs={
'class': 'type-file',
'multiple': True,
'id': 'file-input',
'onchange':'preview()',
}
)
}
class GarantiaImagenesForm(forms.ModelForm):
class Meta:
model = GarantiaImagenes
fields = ['garantia']
widgets = {
'garantia':forms.FileInput(
attrs={
'class': 'type-file',
'multiple': True,
'id': 'file-inputz',
'onchange': 'previewz()',
}
),
}
views.py
def create_carros(request):
carroform = CarroForm(request.POST or None)
carroimagenesform = CarroImagenesForm(request.POST or None)
garantiaimagenesform = GarantiaImagenesForm(request.POST or None)
if request.method == 'POST' and 'carros' in request.POST:
form = CarroForm(request.POST or None)
if form.is_valid():
form.save()
if request.method == 'POST' and 'fotosCarro' in request.POST:
carroimagenesform = request.FILES.getlist('fotosCarro')
if form.is_valid():
for f in carroimagenesform:
images=CarroImagenes(fotosCarro=f)
images.save()
if request.method == 'POST' and 'garantia' in request.POST:
garantiaimagenesform = request.FILES.getlist('garantia')
if garantiaimagenesform.is_valid():
for g in garantiaimagenesform:
imagez=GarantiaImagenes(garantia=g)
imagez.save()
else:
form = CarroForm()
return render(request, 'carros/carros-form-add.html', {
'form': form,
'carroimagenesform': carroimagenesform,
'garantiaimagenesform':garantiaimagenesform
})
add.html