Как сохранить пустые строки в textarea в Django admin UI?

У меня есть поле на объекте, и я отображаю его с помощью textarea в Django (3.2) admin UI, используя этот код , что-то вроде:

class MyObject(models.Model):
    some_text = prompt = db.CharField(max_length=10000)

# ..

class MyObjectAdmin(admin.ModelAdmin):
    list_display = ('id', 'some_text')

    def formfield_for_dbfield(self, db_field, **kwargs):
        """Use Textarea for some_text.

        See also https://stackoverflow.com/a/431412."""
        formfield = super().formfield_for_dbfield(db_field, **kwargs)
        if db_field.name == 'some_text':
            formfield.widget = forms.Textarea(attrs={'rows': 10, 'cols': 80})
        return formfield

При редактировании в Django admin UI, если я добавляю пустые строки (нажимая несколько раз Enter), то при сохранении они исчезают. Итак, при редактировании, пустые строки:

while editing

Но после сохранения, без новых строк:

after editing

Как заставить администратора Django сохранять пустые строки (как новые строки)?

Если у меня непустые строки, он сохраняет все новые строки.

Во время редактирования:

enter image description here

После редактирования (выгружается в файл), с новыми строками:

enter image description here

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

def formfield_for_dbfield(self, db_field, **kwargs):
    formfield = super().formfield_for_dbfield(db_field, **kwargs)
    if db_field.name == 'some_text':
        formfield.strip = False
        formfield.widget = forms.Textarea(attrs={'rows': 10, 'cols': 80})
    return formfield
Вернуться на верх