titulo power diapositiva contenido con django django-forms

django - power - diapositiva contenido con titulo



ModelChoiceField, eliminando la opciĆ³n en blanco (1)

Si desea eliminar la opción en blanco para todos los ModelChoiceField , podría hacer algo como ...

class Form(forms.ModelForm): class Meta: model = MyModel def __init__(self, *args, **kwargs): super(Form, self).__init__(*args, **kwargs) modelchoicefields = [field for field_name, field in self.fields.iteritems() if isinstance(field, forms.ModelChoiceField)] for field in modelchoicefield: field.empty_label = None

Pero eso reemplazaría a todos los ModelChoiceField s, así que tal vez algo más detallado como:

for fieldname in (''field1'',''field2'',''field3'',''field4'',''field5'',''field6''): self.fields[fieldname].empty_label = None

¡Ciertamente más fácil que el sobrescrito __init__ que mencionaste!

Actualización de Moritz

Puedes usar el uso 2017+:

forms.ModelChoiceField(... empty_label=None

Quiero deshacerme de la opción "-------------" que Django agrega en una entrada de selección que representa una clave externa en un ModelForm

Se ha respondido que puede usar la opción empty_label=none , pero tengo un ModelForm, no un formulario regular y no está permitido anular el campo.

Sé que puedo anular el __init__() del ModelForm para modificar un queryset de ModelChoiceField usando

self.fields[''my_foreign_key''].queryset = ....

Pero esto sería realmente feo, ya que esto ocurre con más de 10 teclas foráneas en el modelo "Principal", y hay más que un modelo basado en este modelo.

Todo el contexto:

  • cada una de estas claves foráneas apunta al mismo tipo de modelos: son listas particulares de opciones, muchos modelos para facilitar su modificación a través del administrador.
  • Todos estos modelos están relacionados con el modelo principal mediante una relación "to_field = code", basada en un Charfield que contiene un código de tres letras (bueno, no es mi culpa, tuve que usar una base de datos de MS Access heredada), este CharField tiene Las opciones blank=True, unique=True , así que, para cada lista, puedo crear un registro "---No information yet---" que tiene, apuesta, un valor en blanco en lugar de un código de tres letras ...

La situación es ahora: obtengo un campo de entrada de selección con dos opciones de "valor en blanco": el django uno y el mío, uno después del otro. Solo me olvido de la opción ''empty_label = none'' aquí también ...