我有这样的模特

class Timer(models.Model):
"""Represents a timing system"""

   start_time = models.DateTimeField(default=datetime.datetime.now())
   end_time = models.DateTimeField()


并以此为模型的形式

class JobForm(forms.ModelForm):

    class Meta:
        exclude = ['slug','author','duration',]
        model = Job


当我想添加一些定时信息时出现麻烦,这意味着我必须以长格式输入

DD-MM-YYYY HH:MM:SS


时间将在发生的同一天实时添加,因此长格式看起来很浪费精力,我宁愿这样做

HH:MM


我无法使用model.TimeField,因为我将计算开始时间和结束时间之间的持续时间,并且有人可能会通过定时睡眠或其他人知道跨过午夜。
我如何允许在HH:MM中输入并将其作为datetimefield(最终经过一些努力)?希望代码假定与当前日期相同的日期给HH:MM

最佳答案

在查看表单文档后,这是iv决定做的,因为我不明白@cclerville的建议(也许django很差?)
开始:
在我的forms.py中

class MyDateTimeField(forms.Field):

    def to_python(self, value):
        # Return an empty list if no input was given.
        if not value:
            return []
        import datetime
        today = datetime.date.today()
        hhmm = value.split(':')
        val= datetime.datetime.combine(datetime.date.today(), datetime.time(int(hhmm[0]),int(hhmm[1])))
        return val


以及表单本身:

class JobForm(forms.ModelForm):
    end_time = MyDateTimeField()

关于python - 在Django DateTimeField中允许HH:MM类型的输入,而不是长格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14882648/

10-12 23:24