Witam wszystkich, to mój pierwszy post na tym forum.
Od razu przejdę do rzeczy. Tworzę moją pierwszą samodzielną stronkę przy pomocy Django (wersja 3.1), ale mam problem z walidacją formularza ModelForm. Chciałbym aby za pomocą formularza użytkownik mógł uploadować kilka obrazów, ale jednocześnie chciałbym ograniczyć wielkość całego uploadu, powiedzmy do 10MB. Chciałbym to zrobić już na poziomie formularza, ale niestety nie mogę sobie z tym poradzić. Oto mój kod:

forms.py

class UploadImageForm(forms.ModelForm):

    class Meta:
        model = Image
        fields = ["my_image"]
        widgets = {"my_image": ClearableFileInput(attrs={"multiple": True})}
        labels = {"my_image": "Dodaj obraz"}

    def clean_my_image(self):
        data = self.cleaned_data.get("my_image")
        if data.size > 10485760:
            raise forms.ValidationError("Maksymalna objętość dodawanych plików wynosi 10MB.",
                                        code="invalid")

views.py

@login_required
def image_upload_form(request):
    if request.method == "POST":
        form = UploadImageForm(request.POST, request.FILES)
        files = request.FILES.getlist("my_image")
        if form.is_valid():
            for f in files:
                model_instance = Image(my_image=f)
                model_instance.save()
        return redirect(upload_success)
    else:
        form = UploadImageForm()
    return render(request, "mysite/upload_form.html", {"form": form})

W jaki sposób uzyskać uzyskać w funkcji clean_my_image objetość w bajtach wszystkich załadowanych przez użytkownika plików? Jestem w stanie to zrobić w widoku, po przejechaniu pętlą po liście request.FILES.getlist("my_image") i wywołaniu metody .size dla każdego elementu, ale nie umiem tego poprawnie zrobić przy walidacji pola formularza. W rezultacie mój formularz nic nie waliduje :(
Czytałem dokumentację, SO, różne wpisy na innych stronach, ale nie znalazłem rozwiązania, które by zadziałało. Jeśli ktoś wie, jak przeprowadzić taką walidację, to prośba o pomoc.

EDIT: przy takim ustawieniu funkcji clean_my_image wyskakuje mi przy uploadzie komunikat "This field cannot be blank". Spodziewam się, że ma to związek z kolejnością funkcji walidacyjnych, wywoływanych przez django przy wowyłaniu funkcji is_valid() w widoku, ale nie moge się w tym połapać :(