【问题标题】:Django forms.DateTimeField change input typeDjango forms.DateTimeField 更改输入类型
【发布时间】:2021-10-19 12:44:13
【问题描述】:

我想将 forms.DateTimeField 输入类型更改为“d/m/y H:M”。我怎样才能做到这一点? 我试过了,但没有用:

travel_on = forms.DateTimeField(input_formats='%m/%d/%y %H:%M')

这是我的票证模型:

User = settings.AUTH_USER_MODEL
class Ticket(models.Model):
    from_station = models.CharField(max_length=30)
    to_station = models.CharField(max_length=30)
    purchased_on = models.DateTimeField(default=timezone.now)
    travel_on = models.DateTimeField()
    customer = models.ForeignKey(User,on_delete=models.CASCADE)

    def __str__(self):
        return f"Customer:{self.customer.username},From:{self.from_station},To:{self.to_station},Travel on:{self.travel_on},Purchased on:{self.purchased_on}"    

我的工单:

from .models import Ticket
from django import forms

class TicketForm(forms.ModelForm):
    travel_on = forms.DateTimeField(input_formats='%m/%d/%y %H:%M')

    class Meta:
        model = Ticket
        fields = ('from_station','to_station','travel_on')

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    作为documentation on input_formats says

    input_formats

    格式列表,用于尝试将字符串转换为有效的 datetime.date 对象。

    因此,您应该将其传递为:

    travel_on = forms.DateTimeField(<strong>input_formats=['%d/%m/%y %H:%M']</strong>)

    所以你把它包装在一个列表中。如果一个模式失败,Django 将移动到下一个模式,直到一个模式匹配,或者所有输入格式都用完。

    注意%y 只取一年的最后两位位,所以你应该写成17/08/21 15:39

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2016-06-22
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多