Tengo un modelo tabular en línea en el administrador de Django. Necesito 1 de los campos para no ser modificable después de que se haya creado, pero configurarlo como de solo lectura (a través de Readonly_fields) que funciona bien, pero convierte el campo en una etiqueta al hacer clic en "Agregar otro elemento" en lugar de un menú desplegable.Solo lectura para elementos existentes solo en Django admin inline
¿Hay alguna manera de mantener un campo de solo lectura, pero aún así permitir que se creen nuevos elementos con la entrada de campo adecuada?
Gracias!
Thomas
Editar: Managed que averiguarlo a través de un widget personalizado
class ReadOnlySelectWidget(forms.Select):
def render(self, name, value, attrs=None):
if value:
final_attrs = self.build_attrs(attrs, name=name)
output = u'<input value="%s" type="hidden" %s />' % (value, flatatt(final_attrs))
return mark_safe(output + str(self.choices.queryset.get(id=value)))
else:
return super(ReadOnlySelectWidget, self).render(name, value, attrs)
Simplemente lo convierte en un escondido si hay un valor, no va a funcionar en todas las situaciones (solo realmente funciona con 1 campo de solo lectura).
añadir su solución como respuesta, así que la cuestión se presenta como respondida :) – ashwoods