Necesito establecer el valor del campo, que no se pasa al constructor de Formulario Django.Establezca el valor del campo en el método Django Form clean(), si este campo no se pasa en el constructor
que tienen el modelo y la forma como esta:
class Message(models.Model):
created = models.DateTimeField()
text = models.CharField(max_length=200, blank=True, null=True)
active = models.BooleanField(default=False)
class MessageForm(forms.ModelForm):
class Meta:
model = Message
exclude = ('created', 'active')
def clean(self):
# check if user is blocked
if user.is_admin():
self.cleaned_data['active'] = True
return self.cleaned_data
preverse: si el usuario actual es admin - Necesito ajusta automáticamente mensaje como activo. El usuario no debe pasar este parámetro por formulario.
real: veo que mensaje guardado siempre tienen la bandera "falso" (puedo eliminar condiciones y en este caso también veo que el mensaje no está activo).
Por favor, ayúdame a entender, ¿cómo puedo yo establecer este "activa" bandera en limpia método().
¿Cómo y de dónde viene el "usuario" variable de conseguir el sistema? –
Yo blanco esto por ejemplo. Puede eliminar esta condición o reemplazar en algo más. He establecido self.cleaned_data ['active'] = True pero también necesito decirle a Django Form que este campo se usa y necesito establecer este valor en el objeto antes de guardarlo. Puedo hacer esto con el parámetro "inicial" para el objeto Formulario, pero no puedo hacerlo en mi caso. Necesito decirle a Django Form que he usado el campo "activo", pero no sé cómo hacerlo en un método de método clean(). –