dato un insieme di modelli tipici:Come si modifica il widget predefinito per tutti i campi data di Django in un ModelForm?
# Application A
from django.db import models
class TypicalModelA(models.Model):
the_date = models.DateField()
# Application B
from django.db import models
class TypicalModelB(models.Model):
another_date = models.DateField()
...
Come potrebbe un cambiare il widget di default per tutti i DateFields ad un MyDateWidget personalizzato?
Sto chiedendo perché voglio che la mia applicazione abbia un datapicker jQueryUI per l'inserimento delle date.
Ho considerato un campo personalizzato che estende django.db.models.DateField con il mio widget personalizzato. È questo il modo migliore per implementare questo tipo di cambiamento trasversale? Tale modifica richiederà specificamente l'importazione di uno speciale MyDateField in ogni modello, che è laborioso, soggetto a errori dello sviluppatore (ad esempio alcuni modelli.DateField supererà), e nella mia mente sembra una inutile duplicazione degli sforzi. D'altra parte, non mi piace modificare quella che potrebbe essere considerata la versione canonica dei modelli.DateField.
È apprezzato il pensiero e l'input.
+1 se questo è un comportamento comune necessario su più moduli con DateTimeFields, questo è il modo DRY per farlo –
Grandi cose Dove è documentato formfield_callback –
Grazie per questa grande idea! Dentro la classe SomeForm ho _se lf.instance_ proprietà con oggetto modello del modulo corrente. Qualcuno sa come posso ottenere questo oggetto all'interno della funzione _make_custom_datefield_? – ramusus