¿Cómo puedo establecer un valor inicial de un campo en el formulario generado automáticamente para agregar una instancia de modelo de Django, antes de que se muestre el formulario? Estoy usando Django 1.3.1.¿Cómo establecer los datos iniciales para el modelo de administrador de Django Agregar formulario de instancia?
Mi modelo es el siguiente:
class Foo(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
y la forma de administración actual es realmente nada especial
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
Cuando uso la página de administración para añadir una nueva instancia de Foo, consigo un buen formulario con campos vacíos para el título y la descripción. Lo que me gustaría es que el campo de descripción esté configurado con una plantilla que obtengo llamando a una función.
Mi actual mejor intento de llegar allí es la siguiente:
def get_default_content():
return 'this is a template for a Foo description'
class FooAdminForm(django.forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwargs):
kwargs['initial'].update({'description': get_default_content()})
super(FooAdminForm, self).__init__(self, *args, **kwargs)
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
form = FooAdminForm
pero si intento esto me sale este error de Django:
AttributeError at /admin/bar/foo/add/
'FooForm' object has no attribute 'get'
Request Method: GET
Request URL: http://localhost:8000/admin/bar/foo/add/
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value: 'FooForm' object has no attribute 'get'
Exception Location: /www/django-site/venv/lib/python2.6/site-packages/django/forms/widgets.py in value_from_datadict, line 178
No sé lo que está mal aquí, y que debería hacer para que funcione Lo que también me parece extraño acerca de este error (aparte del hecho de que lo veo en absoluto) es que no hay ningún FooForm en mi código.
Vaya, que funcionó como un encanto! Un mensaje increíblemente críptico, por cierto, por un error tan tonto ... ¡Muchas gracias por su ayuda! –
Por cierto, también intenté con éxito su segunda sugerencia, que es incluso más limpia, ¡gracias de nuevo! –
Encontré que establecer kwargs ['initial'] causaba un error al guardar el formulario. Me había propuesto una cláusula if: si 'inicial' en kwargs.keys():.. kwargs [ 'inicial'] actualización (... Esto funcionó para la visualización de los valores iniciales y actualizarlos – Sven