Skip to content

Conversation

@akortauwr
Copy link
Collaborator

issue fix:
#1713

@lgpawel
Copy link
Contributor

lgpawel commented Nov 13, 2024

Jest już lepiej (tj. nie dostajemy nieprawdziwej informacji, że wszystko jest OK), ale wciąż zdarza się pewna niespójność działania strony. Na przykład: proszę się zalogować jako ja (login pawel.laskos-grabowski) i do przydługiej treści w formularzu dopisać tyle znaków, ile pozwoli strona – mi "wchodzi" 25, ale po odesłaniu formularza zawartość nie jest zapisywana w bazie, a w formularzu wyświetla się informacja o błędzie, że wprowadzono 1004 znaki zamiast 1000.

Różnica wydaje się być związana ze złamaniami wiersza, których u mnie jest właśnie 4, i jeśli je usunąć, to pole wypełnione do oporu "przechodzi". Proszę poszukać, skąd to się bierze – jest szansa (nie wiem, jak duża), że to wręcz bug w Django (a gdyby patrzył Pan na jego źródła, to proszę pamiętać, że u nas jest niestety jego dość nieaktualna wersja), ale dobrze byłoby to potwierdzić (a jeśli jest on nadal aktualny, to najlepiej zgłosić go też u nich).

@akortauwr
Copy link
Collaborator Author

Wprowadziłem workaround związany z walidacją pola tekstowego. Standardowo, w Django metoda clean_() jest wykonywana podczas wywoływania is_valid(), ale wstępna walidacja (w tym sprawdzanie długości pola) odbywa się przed jej uruchomieniem. Gdy ustawiałem ograniczenia długości na poziomie modelu, is_valid() odrzucało dane zanim wywołał się clean_().

  • Usunąłem ograniczenie długości na backendzie
  • W metodzie clean_() usuwam niepotrzebne znaki \r i wykonuje własną walidacje długości
  • Limit 1000 znaków przeniosłem na fronted, który poprawnie liczy endliny: comment = forms.CharField(required=False, widget=forms.Textarea(attrs={'rows': 5, 'maxlength': 1000}))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zgrzyt z polem uwag tekstowych w dezyderatach w okolicy limitu znaków

4 participants