【问题标题】:Separate Datetime field to show Date and Time separate in HTML using Django单独的日期时间字段以使用 Django 在 HTML 中单独显示日期和时间
【发布时间】:2018-02-10 18:47:24
【问题描述】:

我使用 Python 3.6 和 Django 作为 Web 框架 我必须将日期时间一起保存在我的数据库中,但在 HTML 中显示日期和时间单独的字段。 型号代码:

class date_time(models.Model):
    date = models.DateField(default=timezone.now)
    time = models.TimeField(default=timezone.now)

表格代码:

class date_time_Form(forms.ModelForm):
    class Meta:
        model = date_time
        fields = ('date', 'time',)
        widgets = {
            'date': forms.TextInput(attrs={'class': 'form-control', 'type': 'date'}),
            'time': forms.TextInput(attrs={'class': 'form-control', 'type': 'time'}),
        }
        labels = {
            'date': 'Date',
            'time': 'Time',
        }

目前,我将存储在一个单独的字段中,但我想将日期+时间保存在一个字段中。

更新 - 我可以使用 Datetime 字段,但这只会在 HTML 页面中创建一个元素。

但在 HTML 中,我想要像下面这样的单独字段,模型中只有一个日期时间字段

有什么办法可以做到吗?

【问题讨论】:

    标签: python django datetime


    【解决方案1】:

    你可以使用SplitDateTimeField:https://docs.djangoproject.com/en/3.0/ref/forms/fields/#splitdatetimefield

    class Myform(forms.Form):
        start_date = forms.SplitDateTimeField(initial=datetime.datetime.now)
    

    不过,如果您想为每个标签添加一个标签,您将需要修改您的模板,或使用单独的表单属性。

    【讨论】:

      【解决方案2】:

      这正是DateTimeField 的用途。

      date_time = models.DateTimeField()
      

      【讨论】:

      • 我想我无法让你们理解我想要达到的目标。请查看更新的问题。感谢您的努力
      【解决方案3】:

      您可以使用models.DateTimeField 将日期时间存储在一个字段中。 DateTimeField

      【讨论】:

      • 我想我无法让你们理解我想要达到的目标。请查看更新的问题。感谢您的努力
      【解决方案4】:

      您可以从 HTML 中获取日期和时间,然后将它们组合成一个 DateTime 对象。具体方法见Pythonic way to add datetime.date and datetime.time objects

      如果你想要反过来(获取一个 DateTime,并获取日期和时间),你可以看到 How do I convert datetime to date (in Python)?Convert datetime to time in python

      【讨论】:

      • 是的,但是我们将如何在 Django 中实现它。有没有办法将模型中的日期时间字段转换为表单中的日期和时间字段?
      • @umang Django 是 Python。您将模型的 DateTime 值存储在一个变量中,例如 myDateTime,然后调用 myDateTime.date() 和 myDateTime.time() 来获取日期和时间。
      • 看,我在数据库“date_time”中有一个列,它可以一起保存日期和时间。但是在 HTML 模板中,我希望将日期和时间分开,这意味着我的日期将来自一个输入字段,而时间将来自另一个输入字段,然后将两者结合起来并将其存储到我们的 date_time 列中。所以这里的挑战是,如果我在 model.py 中创建 Datetime 字段,那么在 html 中我也会得到一个输入字段日期和时间。如果我在 model.py 中分别使用 datefield 和 timefield ,那么它将被存储为两个单独的列。我想要数据库中的一列和 HTML 中的两个单独的输入字段。
      • 然后您使用我提供的第一个链接“将 datetime.date 和 datetime.time 对象一起添加”来创建可以存储在数据库中的 datetime.datetime 对象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      相关资源
      最近更新 更多