I have a many to many field in models-
class A(models.Model):
    file = models.ManyToManyField(B, blank=True)
refering to another class in model
class B(models.Model):
    filename = models.FileField(upload_to='files/')
    user = models.ForeignKey(User)
forms.py
class AForm(forms.ModelForm):
    file = forms.FileField(label='Select a file to upload', widget=forms.ClearableFileInput(attrs={'multiple': True}), required=False)
    class Meta:
        model = A
        fields = '__all__'
How to get the file upload working over here? I had the basic views.py suggested over here- doesn't work https://simpleisbetterthancomplex.com/tutorial/2016/08/01/how-to-upload-files-with-django.html
EDITED: views.py
if request.method == 'POST':
    a = A()
    form = AForm(request.POST, request.FILES, instance=a)
    if form.is_valid():
        a=form.save()
        files = request.FILES.getlist('file')
        for f in files:
            a.file.create(filename=f, user=request.user)
        a.file.add(a.id)
        if request.is_ajax():
            return JsonResponse({'success': True})
        return redirect('file_view', a_id=a.id)
     elif request.is_ajax():
        form_html = render_crispy_form(form, context=csrf(request).copy())
        return JsonResponse({'success': False, 'form_html': form_html})
ajax-
$.ajax({
        url: "",
        type: "POST",
        data: formdata,
        contentType: false,
        processData: false,
        success: function(data) {
            if (!(data['success'])) {
                // Replace form data
                $('#{% if not form_id %}form-modal{% else %}{{ form_id }}{% endif %}-body').html(data['form_html']);
                $('#form-submit').prop('disabled', false);
                $('#form-cancel').prop('disabled', false);
                $(window).trigger('init-autocomplete');
            } else {
                alertbox('Form saved', '', 'success');
                $('#form-submit').prop('disabled', false);
                $('#form-cancel').prop('disabled', false);
                setTimeout(function () {
                    location.reload();
                }, 2000);
            }
        },
        error: function (request, status, error) {
            alertbox('AJAX Error:', error, 'danger');
        }
    });
 
    