【问题标题】:Duration datetime (djangorest , json input)持续时间日期时间(djangorest,json 输入)
【发布时间】:2020-01-03 02:20:17
【问题描述】:

我正在尝试找到一种方法来制作“持续时间”变量,该变量将保存一个日期时间,以显示我的应用拍卖是否已经结束或仍在进行。 我有一个“created”变量,它显示了拍卖的创建时间,我需要找到一种方法来创建一个“duration”变量,这样我就可以验证项目的状态(如果它仍然处于活动状态)。 我不仅需要一个现场建议,我还需要一种通过我的序列化器将 json 数据从前端(reactjs)传递到我的后端(django-rest)的方法。

我尝试使用 DateTimeField、DurationField 进行序列化,甚至想过使用 IntegerField(总分钟数),然后将它们转换为天/小时/分钟,但我的脑海中仍然不清楚解决方案。

created = models.DateTimeField(editable=False, auto_now=True) #is my datetime that the model was created

duration = ? #i need a way to pass json data to this field and create a valid datetime instance

json 数据{?}

我期待一个有效的持续时间(日期时间)字段,使用用户通过 post 方法提供的数据创建。

【问题讨论】:

  • 您可以将DateTimeField 作为拍卖end_date,然后在您的序列化程序中使用注释来计算从当前日期开始拍卖的剩余持续时间。持续时间 = (end_date - current_date)。
  • 问题是我正在想办法获取用户输入(天、小时、分钟),然后将其转换为 currentDate += {userDurationInput}。例如,如果当前时间是 :datetime.datetime(2019, 8, 29, 23, 15, 21, 353652)。我想找到一种方法将用户“userDurationInput”添加到这种格式,然后让我的“duration.DateTimeField”进行以后的比较。也许这会起作用: datetime.now() + timedelta(days=100, hours = 5) ?
  • 当然可以,您在完成这项任务时遇到了什么问题。
  • 我试图想办法,使用我的序列化程序的“持续时间”DateTimeField 将 {days,hours,minutes} 从我的 reactjs 前端传递到我的 djangorest 后端。然后执行 来保存 datetime.now() += timedelta(days, hours,minutes)。我的问题是:我应该尝试直接使用我的持续时间 DateTimeField ,还是可以通过额外的字段(上下文)将 {days,hours,minutes} 数据传递到我的后端?

标签: javascript reactjs django-models django-rest-framework


【解决方案1】:

我想通了。所以我所做的是:

在前端 (reactJs) 我创建了一个 duration = Date();

然后我修改了我的日期对象:
duration .setDate(date.getDate() + <numberOfDays> ); //添加天数

然后用
duration .toISOString();
duration .toJSON();
格式化我的日期时间。然后我调用了我的 post 方法并将其保存在

后端 django-rest 字段中:
duration = models.DateTimeField(blank=False)

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2012-01-09
    • 2018-05-06
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多