使用Django分隔日期时间字段以显示HTML中的日期和时间

时间:2017-09-01 16:45:11

标签: python django datetime

我使用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页面中只创建一个元素。 When I use Datetime field

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

有没有办法实现这个目标?

4 个答案:

答案 0 :(得分:0)

这正是DateTimeField的用途。

date_time = models.DateTimeField()

答案 1 :(得分:0)

您可以使用models.DateTimeField将dateTime存储在一个字段中。 DateTimeField

答案 2 :(得分:0)

您可以从HTML获取日期和时间,然后将它们合并到DateTime对象中。有关具体方法,请参阅Pythonic way to add datetime.date and datetime.time objects

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

答案 3 :(得分:0)

您可以使用SplitDateTimeFieldhttps://docs.djangoproject.com/en/3.0/ref/forms/fields/#splitdatetimefield

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

Example of SplitDateTime field

但是,如果每个标签都需要一个标签,则需要修改模板或使用单独的表单属性。