En mi administrador para un objeto Chair
Tengo un TabularInline
para un número arbitrario de objetos Desk
. Quiero que cada Chair
siempre tenga al menos un objeto Desk
asociado. ¿Hay alguna manera de hacer que la interfaz de administración fuerce al usuario a ingresar al menos un Desk
? ¿Desea mostrar un error si no se ingresa Desk
?Django: Forzar a los usuarios administradores a ingresar al menos un elemento en TabularInline
7
A
Respuesta
0
Matthew Flanagan tiene un gran ejemplo de cómo requerir un formulario válido en un formset: http://code.google.com/p/wadofstuff/wiki/WadOfStuffDjangoForms y http://wadofstuff.blogspot.com/2009/08/requiring-at-least-one-inline-formset.html Espero que te ayude.
8
Un genérico método FormSet clean()
para requerir al menos un artículo:
def clean(self):
"""Check that at least one service has been entered."""
super(MyFormSet, self).clean()
if any(self.errors):
return
if not any(cleaned_data and not cleaned_data.get('DELETE', False)
for cleaned_data in self.cleaned_data):
raise forms.ValidationError('At least one item required.')
Esto debería funcionar para formsets llano, formsets modelo y en línea formsets modelo.
15
Usando la respuesta de akaihola, aquí es un ejemplo más completo:
Agregar a su forms.py:
from django import forms
from django.forms.models import BaseInlineFormSet
class AtLeastOneRequiredInlineFormSet(BaseInlineFormSet):
def clean(self):
"""Check that at least one service has been entered."""
super(AtLeastOneRequiredInlineFormSet, self).clean()
if any(self.errors):
return
if not any(cleaned_data and not cleaned_data.get('DELETE', False)
for cleaned_data in self.cleaned_data):
raise forms.ValidationError('At least one item required.')
Y luego, en su admin.py:
class DeskInline(admin.TabularInline):
model = Desk
formset = AtLeastOneRequiredInlineFormSet
class ChairAdmin(admin.ModelAdmin):
inlines = [DeskInline,]
admin.site.register(Chair, ChairAdmin)
Cuestiones relacionadas
- 1. Idear: Permitir a los administradores editar otros usuarios - Rails
- 2. Django no enviar mensajes de correo electrónico a los administradores
- 3. Exponer django admin a los usuarios. ¿Perjudicial?
- 4. ¿Es posible agregar un encabezado al correo electrónico que django envía a los administradores cuando se genera un 500?
- 5. ¿Imponer al menos un valor en una relación muchos a muchos, en Django?
- 6. administrador de Django: ¿da acceso a los usuarios a objetos/campos específicos?
- 7. Agregar campos personalizados a usuarios en django
- 8. Personalizar Django admin Campo predeterminado de TabularInline
- 9. SIGSEGV al ingresar a una función
- 10. identificadores únicos entre los usuarios y administradores con rieles Idear
- 11. Django empuje de respuesta HTTP a los usuarios
- 12. En el rastreador de problemas de GitHub, ¿pueden los usuarios no administradores asignar usuarios y etiquetas?
- 13. cómo limitar el acceso a la administración activa de los usuarios administradores
- 14. Idear: La restricción de acciones a los administradores
- 15. Django: Cómo filtrar usuarios que pertenecen a un grupo específico
- 16. Un controlador, diferentes vistas para usuarios normales y administradores
- 17. Ejecutar una función bash al ingresar a un directorio
- 18. Dando a los usuarios un "sistema de reputación" - ¿Debería ...?
- 19. Django - Mostrando diferentes plantillas para administradores
- 20. ¿Cómo forzar a Django Admin a usar select_related?
- 21. Forzar WCF para llamar a un método en cada solicitud antes de ingresar a la función real
- 22. Administradores personalizados de Django para el modelo de usuario
- 23. Mostrar un mensaje a los usuarios precomprometidos en Tortoise SVN
- 24. Cómo forzar a "ingresar la clave" para que actúe como "tecla de tabulación" mediante javascript?
- 25. Reordenar usuarios en django auth
- 26. Al declarar una enumeración, ¿debe forzar el tipo a byte para menos de 256 entidades?
- 27. Ingresar menos en el cuadro de texto RTL
- 28. Obligar a los usuarios a cerrar sesión en Devise
- 29. Permitir a los usuarios elegir un tema personalizado en Rails
- 30. La mejor manera de obligar al usuario a ingresar una hora en un JTextField
también mira este hilo: http://stackoverflow.com/questions/1206903/how-do-i-require-an-inline-in-the-django-admin/1233644#1233644 – arie