Tengo un formulario de administrador de Django. Y ahora quiero completar su campo inicial con datos basados en mi modelo. Así que he intentado esto:Valor predeterminado de campo de Django AdminForm
class OrderForm(forms.ModelForm):
class Meta:
model = Order
email = CharField(initial="null", widget=Textarea(attrs={'rows': 30, 'cols': 100}))
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
products = kwargs['instance'].products.all()
self.message = purchase_message % (
"".join(["<li>" + p.name + ": " + str(p.price) + "</li>" for p in products]),
reduce(lambda x, y:x + y.price, products, 0)
)
# and here I have a message in self.message variable
super(OrderForm, self).__init__(*args, **kwargs)
En este punto no sé cómo acceder campo de correo electrónico para establecer su valor inicial antes de efectuar el artilugio. ¿Cómo puedo hacer esto?
No funciona si está utilizando una clase de formulario personalizada para el administrador de modelo – ozgur
@ozgur, naturalmente. Si usa una clase de formulario personalizada, simplemente use 'get_form' como se recomienda en otra respuesta. Si no es así, no hay absolutamente ninguna razón para hacerlo. – Wtower
Otra respuesta tampoco funciona si el campo que proporciona un valor inicial se excluye mediante la propiedad 'exclude' porque' base_fields' no incluye los campos excluidos. – ozgur