formularios - Campo oculto en el modelo de Django
formularios django (4)
Aunque mencionó que no puede usar la exclusión en su caso, creo que otros que se encuentran con esta respuesta (como yo mismo, según el título) pueden encontrarla útil.
Es posible ocultar campos selectivamente usando exclude
en ModelAdmin, aquí hay un fragmento de algo en lo que estoy trabajando:
class ItemsAdmin(admin.ModelAdmin):
form = ItemsForm
actions = None
list_display = (''item_id'', ''item_type'', ''item_title'', ''item_size'', ''item_color'',)
search_fields = (''item_id'', ''item_title'',)
inlines = [ImageInline,]
readonly_fields = (''disable_add_date'',''disable_remove_date'',)
exclude = (''add_date'', ''remove_date'',)
###.............
Hace un tiempo hice una clase de modelo. Hice varios ModelForms para él y funcionó maravillosamente.
Recientemente tuve que agregar otro campo opcional (en blanco = verdadero, nulo = verdadero) para poder almacenar algunos datos de relación entre los usuarios. Es esencialmente un sistema de referencia.
El problema es agregar que este nuevo campo ha significado que el campo de referencia aparece donde no he cambiado el ModelForms para excluirlo. Normalmente esto solo significaría 10 minutos adicionales y excluirlos, pero en este caso, debido a políticas de gestión de proyectos fuera de mi control, solo tengo control sobre los Modelos para esta aplicación.
¿Puedo yo?
- Establecer el campo para autoexcluir?
- Configúralo para que se visualice como oculto (aceptable si no perfecto)?
Podría definir una subclase de campo de modelo personalizada y anular el método formfield()
para devolver un campo con un widget HiddenInput. Consulte la documentación de los campos personalizados .
Si tiene acceso a la plantilla que podría representar, tiene un campo oculto con el siguiente código:
{{ form.field_name.as_hidden }}
en lugar del estándar:
{{ form.field_name }}
de los documentos sobre Uso de un subconjunto de campos en el formulario :
Establecer editable = False en el campo modelo. Como resultado, cualquier formulario creado a partir del modelo a través de ModelForm no incluirá ese campo.