Tengo que agregar el atributo title a las opciones de ModelChoiceField. Aquí está mi clave de administrador para que:¿Cómo agregar atributos a las etiquetas de opción en django?
class LocModelForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(LocModelForm,self).__init__(*args,**kwargs)
self.fields['icons'] = forms.ModelChoiceField(queryset = Photo.objects.filter(galleries__title_slug = "markers"))
self.fields['icons'].widget.attrs['class'] = 'mydds'
class Meta:
model = Loc
widgets = {
'icons' : forms.Select(attrs={'id':'mydds'}),
}
class Media:
css = {
"all":("/media/css/dd.css",)
}
js=(
'/media/js/dd.js',
)
class LocAdmin(admin.ModelAdmin):
form = LocModelForm
puedo añadir cualquier atributo para seleccionar widgets, pero no sé cómo agregar atributos a etiquetas de opción. Alguna idea ?
¿Hay alguna razón en particular por la cual los campos se deben modificar en la clase interna 'Meta' en lugar del método' __init__'? ¿Y se aplicaría el mismo razonamiento para modificar/agregar atributos de widgets para un campo? – hellsgate
@hellsgate En la mayoría de los casos, no hay razón para no anular '__init__' para establecer' widget.attrs'. En la mayoría de los casos de uso, como la modificación de los atributos html en un widget predeterminado * no * que lo hace a través de '__init__', la anulación viola DRY. Desafortunadamente para el caso del OP, tendrá que definir un widget personalizado ya que la etiqueta '
Este enfoque también se puede usar para extender el widget 'SelectMultiple'. Simplemente haga una subclase 'SelectMultiple' y pásele el widget personalizado' MySelect'. – NickBraunagel