Ho bisogno di impostare il valore del campo, non passato al costruttore di Django Form.Imposta il valore del campo nel metodo Django Form clean(), se questo campo non è passato nel costruttore
devo modello e la forma in questo modo:
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
Expected: se l'utente corrente è admin - devo inserire automaticamente un messaggio come attivo. L'utente non deve passare questo parametro per forma.
effettivo: vedo che il messaggio salvato ha sempre il flag "False" (posso eliminare la condizione e in questo caso vedo anche che il messaggio non è attivo).
Ti prego, aiutami a capire, come posso fare impostare questa "attiva" bandiera pulito metodo().
Come e da dove viene la variabile "utente" Get Set? –
I bianco questo per esempio. È possibile eliminare questa condizione o sostituirla con qualcos'altro. Ho impostato self.cleaned_data ['active'] = True, ma ho anche bisogno di dire a Django Form che questo campo è usato e che è necessario impostare questo valore sull'oggetto prima di salvare. Posso farlo con il parametro "iniziale" per l'oggetto Form, ma non posso farlo nel mio caso. Ho bisogno di dire a Django Form che ho usato il campo "attivo", ma non so come farlo in un metodo di compilazione clean(). –