编辑表单时,Django DateTImeField格式丢失

时间:2012-05-19 14:59:05

标签: python django forms datetime

我的形式有这样的东西:

class EventForm(ModelForm):
    reg_due_date = forms.DateTimeField(input_formats=('%d/%m/%Y %H:%M',), widget=forms.TextInput(attrs={ 'class': 'datePicker','readonly':'true'}))

class Event(models.Model):
    reg_due_date = models.DateTimeField()

一切正常,当我使用jQuery DateTimePicker时,我在输入字段中有正确的日期时间格式。但是当我尝试通过这部分代码编辑表单时,我看到秒出现,这是完全不可接受的。它来自哪里?

def editEventInfo(request,event_id):
    if request.method == 'GET':
        if event_id:
            event = Event.objects.get(pk=event_id)
            form = EventForm(instance=event) # An unbound form
        else:
            form = EventForm() # An unbound form
        return render_to_response('events/editEvent.html', {
            'form': form,
        },context_instance=RequestContext(request))

2 个答案:

答案 0 :(得分:1)

input_formats是表单字段用于将输入字符串解析为日期的格式列表,打印的内容由格式本地化驱动。

您需要激活USE_L10N = True或覆盖DATETIME_FORMAT

请参阅https://docs.djangoproject.com/en/1.4/topics/i18n/formatting/https://docs.djangoproject.com/en/1.4/ref/settings/#datetime-format

答案 1 :(得分:0)

上面的答案并没有解决我的问题, 我必须覆盖默认的DATETIME_INPUT_FORMATS并将我的格式放在首位,因为django会在元组中匹配后立即选择格式。

我把它放在设置中并且我的自定义格式优先级高,它正确呈现。

DATETIME_INPUT_FORMATS = (
    '%m/%d/%Y %I:%M %p',
    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
    '%Y-%m-%d %H:%M:%S.%f',  # '2006-10-25 14:30:59.000200'
    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
    '%Y-%m-%d',              # '2006-10-25'
    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
    '%m/%d/%Y %H:%M:%S.%f',  # '10/25/2006 14:30:59.000200'
    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
    '%m/%d/%Y',              # '10/25/2006'
    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
    '%m/%d/%y %H:%M:%S.%f',  # '10/25/06 14:30:59.000200'
    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
    '%m/%d/%y',              # '10/25/06')