Есть ли способ запретить Django обрезать белое пространство в текстовом поле?

Есть ли способ запретить Django обрезать пробелы в models.TextField? Я перерыл всю документацию и ничего не нашел. База данных, которую я использую, - PSQL. Любое руководство будет оценено по достоинству.

Из ответа я узнал, что есть решение с использованием форм. На данный момент я не использую формы:

class Song(models.Model):
    """
    Fields that are displayed on the Song screeen
    """
    name = models.CharField(max_length=100, blank=True, default="")
    artist = models.CharField(max_length=100, blank=True, default="")
    creator = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    lyrics = models.TextField(default="", blank=True)
    pulled_lyrics = models.TextField(default="", blank=True)
    chords = models.TextField(default="", blank=True)
    strumming_pattern = models.CharField(max_length=30, default="", blank=True)

    """
    Additional information used to determine where to display the song
    """
    public = models.BooleanField(default=False)
    is_favourite = models.BooleanField(default=False)

    def __str__(self):
        return self.name 
class SongViewSet(viewsets.ModelViewSet):
    serializer_class = SongSerializer

    def get_queryset(self):
        """
        Sets queryset to be songs owned by user
        This makes it so that a user can only manipulate their own songs
        """
        if not self.request.user.is_authenticated:
            return []

        user = self.request.user
        qs = Song.objects.all()
        if user.is_superuser:
            return qs
        else:
            return qs.filter(creator=user)
    
    def create(self, request):
        """
        Create user with given request body
        """
        try:
            song = Song.objects.create(creator=request.user, **request.data)
        except:
            return Response('The provided data was of an invalid form.', status=status.HTTP_400_BAD_REQUEST)
        song_serializer = SongSerializer(song)
        return Response(song_serializer.data, status=status.HTTP_200_OK)

JS (React) код для создания новой песни и патча песни соответственно:

const response = await axios.post(
                "/api/songs/",
                {},
                {
                    withCredentials: true,
                    headers: {
                        "X-CSRFToken": getToken(),
                    },
                }
            );
const songCopy = { ...item }
    delete songCopy["creator"];
    axios.patch(`/api/songs/${item.id}/`, songCopy, {
        withCredentials: true,
        headers: {
            "Content-Type": "application/json",
            "X-CSRFToken": getToken(),
        },
    });

Да, вы поле формы должны установить strip=False [Django-doc] в форме, так:

class MyForm(forms.Form):
    some_field = forms.CharField(strip=False)

Для сериализатора это довольно похоже, в вашем сериализаторе вы должны установить **trim_whitespace=False [DRF-doc]:

from rest_framework import serializers

class SongSerializer(ModelSerializer):
    lyrics = serializers.CharField(trim_whitespace=False)

Как говорится в документации:

Если True (по умолчанию), то значение будет очищено от ведущих и последующих пробельных символов.

Если вы отображаете данные, то несколько (ведущих) пробелов будут отображаться на веб-странице как один пробел. Вы можете использовать тег <pre> в качестве преформатированного текстового элемента, так:

{{ some_variable }}
Вернуться на верх