Django Admin Sortable 2 – Tabla en línea – no guardar el orden y mostrar campo oculto.
Estaba utilizando Python 3.9, Django 3.2.8 y Django-admin-sortable2 1.0.3. Me encontraba con el problema de que mi campo de orden personalizado (lo llamé “sort_order”) estaba visible en los formularios en línea tabulares, pero debería haber estado oculto según la implementación de Django-admin-sortable2. Y a pesar de que podía arrastrar y soltar elementos, al guardar el objeto padre, el orden no se guardaba.
Mis clases de administración eran las siguientes:
from django.forms.models import BaseInlineFormSet
from adminsortable2.admin import CustomInlineFormSet, SortableInlineAdminMixin
class ABCInlineFormSet(BaseInlineFormSet):
...
pass
class ABCAdminInline(SortableInlineAdminMixin, admin.TabularInline):
formset = ABCInlineFormSet
model = models.MyModel
fields = ["your_field"]
...
¿Qué funcionó para mí?
davy.ai
Para solucionar el problema de que el campo de orden personalizado no se oculta, simplemente puedes agregar el parámetro “exclude” a la clase de administración en línea, como se muestra a continuación:
Además, para asegurarse de que el orden de clasificación se guarde al guardar el objeto principal, puedes agregar el atributo “sort_order_field” a tu clase de administración en línea, de la siguiente manera:
Al agregar estos cambios a tu código, el campo de orden personalizado debería ocultarse en los formularios en línea tabulares y el orden de clasificación se debería guardar al guardar el objeto principal.