Django: Список изображений пуст из dropzone при сохранении
Я пытался использовать мульти фото загрузки, что процесс работал. Но я использую dropzone.js, список файлов пуст。 Там мой код показан ниже.
models.py
class AssetImage(models.Model):
asset = models.ForeignKey('Asset', related_name='images', on_delete=models.CASCADE)
image = models.ImageField(upload_to='assets/')
forms.py
class AssetImageForm(forms.ModelForm):
image = forms.FileField(label='', required=False, widget=forms.HiddenInput(attrs={'multiple': True}))
class Meta:
model = AssetImage
fields = ['image']
views.py
def asset_create(request):
show_modal = False
if request.method == 'POST':
form = AssetForm(request.POST)
image_form = AssetImageForm(request.POST, request.FILES)
files = [request.FILES.get(f'image[{i}]') for i in range(0, len(request.FILES))]
print(files) # Get the list of files
print("here")
if form.is_valid() and image_form.is_valid():
name = form.cleaned_data['name']
if Asset.objects.filter(name=name).exists():
show_modal = True
else:
asset = form.save()
for f in files:
AssetImage.objects.create(asset=asset, image=f)
return redirect('asset')
else:
form = AssetForm()
image_form = AssetImageForm()
locations = Location.objects.all()
return render(request, 'pages/asset/asset_create.html', {
'form': form,
'image_form': image_form,
'locations': locations,
'show_modal': show_modal
})
asset_create.html
<!-- [ Main Content ] start -->
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<h5>Add Asset</h5>
</div>
<div class="card-block">
<form method="post" enctype="multipart/form-data" class="needs-validation" novalidate>
{% csrf_token %}
<!-- Other form fields -->
<div class="form-group">
<label for="id_name">{{ form.name.label }}</label>
{{ form.name }}
</div>
<div class="form-group">
<label for="serialnumber">Serial Number</label>
{{ form.serialnumber }}
</div>
<div class="form-group">
<label for="id_location2">Location</label>
{{ form.location }}
</div>
<div class="form-group">
<label for="id_model">Model</label>
{{ form.model }}
</div>
<div class="form-group">
<label for="id_images">Images</label>
<div class="dropzone" id="dropzoneForm"></div>
</div>
<button type="submit" class="btn btn-outline-primary">Save</button>
</form>
</div>
</div>
</div>
</div>
<script>
// Prevent Dropzone from auto initializing
Dropzone.autoDiscover = false;
// Initialize Dropzone
$(document).ready(function () {
var myDropzone = new Dropzone("#dropzoneForm", {
url: "{% url 'asset_create' %}", // Make sure this is the correct URL for your asset creation view
paramName: "image", // This should match the key expected in request.FILES
maxFilesize: 10, // MB
parallelUploads: 20,
uploadMultiple: true,
addRemoveLinks: true,
timeout: 50000,
acceptedFiles: 'image/*', // Accept images only
autoProcessQueue : true,
// Set up CSRF token for Django
headers: {
"X-CSRFToken": "{{ csrf_token }}"
},
// Additional event listeners if needed
init: function() {
this.on('success', function(file, response) {
// Handle the response from the server
});
this.on('error', function(file, response) {
// Handle the error
});
}
});
});
</script>
Когда изображение загружено на dropzone, список файлов показывает изображение в списке.
Но когда я нажимаю кнопку сохранения, появляется пустой список.