我正在创建一个使用ModelForm的编辑视图,我希望表单的日期字段以下列格式显示:“%d /%m /%Y ”。
但是,无论我做什么,当调用编辑页面时,日期将以“%m-%d-%Y ”格式显示。
models.py
class Pessoa(models.Model):
nome = models.CharField(max_length=255, null=False)
sobrenome = models.CharField(max_length=255, null=False)
cpf = models.CharField(max_length=14)
data_nascimento = models.DateField()
rg = models.CharField(max_length=15, null=False)
responsavel = models.ForeignKey('Pessoa', related_name='dependentes', blank=True, null=True)
foto = models.ImageField(upload_to='pessoas')
usuario_alteracao = models.CharField(max_length=255, blank=True, null=True)
data_criacao = models.DateTimeField(auto_now_add=True)
data_alteracao = models.DateTimeField(auto_now=True)
settings.py(DATETIME_INPUT_FORMATS和DATE_INPUT_FORMATS)
DATE_INPUT_FORMATS = ['%d/%m/%Y']
DATETIME_INPUT_FORMATS = ['%d/%m/%Y']
pessoas_forms.py
class PessoaForm(ModelForm):
data_nascimento = DateField(
input_formats=settings.DATE_INPUT_FORMATS,
widget=DateInput(attrs={'class': "input", 'placeholder': "Ex.: dd/mm/aaaa", "OnKeyPress":"mask('##/##/####', this)"}))
class Meta:
model = Pessoa
fields = ['nome', 'sobrenome', 'cpf', 'data_nascimento', 'rg', 'foto']
exclude = ['usuario', 'usuario_alteracao', 'data_criacao', 'data_alteracao', 'responsavel']
widgets = {
'nome': TextInput(attrs={'class': "input"}),
'sobrenome': TextInput(attrs={'class': "input"}),
'cpf': TextInput(attrs={'class': "input", 'placeholder': "Ex.: 000.000.000-00", "OnKeyPress":"mask('###.###.###-##', this)"}),
'rg': TextInput(attrs={'class': "input"}),
}
views.py
def get(self, request, id):
try:
pessoa = Pessoa.objects.get(id=id)
except ObjectDoesNotExist:
messages.warning(request, 'Not Found.')
return redirect('pessoas')
pessoa_form = PessoaForm(instance=pessoa)
context = {
'pessoa_form': pessoa_form,
'id': pessoa.id
}
return render(request, 'sagasystem/configuracoes/pessoas/editar_pessoa.html', context)
答案 0 :(得分:2)
您需要使用format
参数告诉窗口小部件如何显示日期。
data_nascimento = DateField(
widget=DateInput(format='%d/%m/%Y', attrs={'class': "input", 'placeholder': "Ex.: dd/mm/aaaa", "OnKeyPress":"mask('##/##/####', this)"}))