如何将整数添加到当前月份,然后在 Django 中更新日期字段
how to add an integer to current month and then update datefield in django
我只是想获取当前月份,然后为其添加一个整数,例如 3 个月,然后将我的日期字段对象更新为该值。
我的 view.py :
def worklist(request,pk):
vessel_id = Vessel.objects.get(id=pk)
vessel = Vessel.objects.all()
component = vessel_id.components.all()
components = component.prefetch_related(
'jobs').filter(jobs__isnull=False)
if request.method == 'POST' and 'form-execute' in request.POST:
this_job = Job.objects.get(pk=request.POST.get('execute_job_id'))
job_type = this_job.type
job_due_date=this_job.due_date
job_interval =this_job.interval
dt = datetime.datetime.today().month
if job_type =='O':
this_job.delete()
else: job_due_date = dt + relativedelta(months=job_interval)
return HttpResponseRedirect(request.path_info)
context = {"component": components,"vessel_id":vessel_id,"vessel":vessel }
return render(request, "worklist.html", context)
我只想说这个工作的截止日期等于这个月加上这个工作间隔,它是一个整数
这里是model.py如果有帮助的话:
class Job(models.Model):
job_type = (
('I', 'Interval'),
('O', 'One time'),
)
name = models.CharField(max_length=100)
description = models.CharField(max_length=100)
type = models.CharField(max_length=1, choices=job_type)
interval = models.IntegerField()
is_critical = models.BooleanField()
due_date = models.DateField()
rank = models.ManyToManyField(UserRank,related_name='jRank')
component = models.ForeignKey(
Component, related_name='jobs', on_delete=models.CASCADE)
runninghours = models.ForeignKey(
RunningHours, related_name="RHjobs", on_delete=models.CASCADE,blank=True)
def __str__(self):
return self.name
我认为你必须更改这一行:
dt = datetime.datetime.today().month
至:
dt = datetime.datetime.today()
否则,您是将月份加到一个整数上。
是datetime.datetime.now()
(或datetime.date.today()
)
如果你想向前跳过等于 N 个 30 天“月”的时间
future = datetime.datetime.now() + datetime.timedelta ( seconds=N*30*24*60*60 )
如果你想 re-set 这个月,那就更难了,因为 leap-years 之类的问题,以及一个月中天数的变化。
year = now.year
month = now.month
day = now.day
hour = now.hour
minn = now.minute
sec = now.second
month = month + N
# some issues ... month > 12? day = 31 and month = 11?
# after you resolve them
future_time = datetime.datetime( year, month, day, hour, minn, sec)
(min
是 Python built-in。你可以覆盖它,但这不是好的做法。因此,minn
)
我只是想获取当前月份,然后为其添加一个整数,例如 3 个月,然后将我的日期字段对象更新为该值。
我的 view.py :
def worklist(request,pk):
vessel_id = Vessel.objects.get(id=pk)
vessel = Vessel.objects.all()
component = vessel_id.components.all()
components = component.prefetch_related(
'jobs').filter(jobs__isnull=False)
if request.method == 'POST' and 'form-execute' in request.POST:
this_job = Job.objects.get(pk=request.POST.get('execute_job_id'))
job_type = this_job.type
job_due_date=this_job.due_date
job_interval =this_job.interval
dt = datetime.datetime.today().month
if job_type =='O':
this_job.delete()
else: job_due_date = dt + relativedelta(months=job_interval)
return HttpResponseRedirect(request.path_info)
context = {"component": components,"vessel_id":vessel_id,"vessel":vessel }
return render(request, "worklist.html", context)
我只想说这个工作的截止日期等于这个月加上这个工作间隔,它是一个整数
这里是model.py如果有帮助的话:
class Job(models.Model):
job_type = (
('I', 'Interval'),
('O', 'One time'),
)
name = models.CharField(max_length=100)
description = models.CharField(max_length=100)
type = models.CharField(max_length=1, choices=job_type)
interval = models.IntegerField()
is_critical = models.BooleanField()
due_date = models.DateField()
rank = models.ManyToManyField(UserRank,related_name='jRank')
component = models.ForeignKey(
Component, related_name='jobs', on_delete=models.CASCADE)
runninghours = models.ForeignKey(
RunningHours, related_name="RHjobs", on_delete=models.CASCADE,blank=True)
def __str__(self):
return self.name
我认为你必须更改这一行:
dt = datetime.datetime.today().month
至:
dt = datetime.datetime.today()
否则,您是将月份加到一个整数上。
是datetime.datetime.now()
(或datetime.date.today()
)
如果你想向前跳过等于 N 个 30 天“月”的时间
future = datetime.datetime.now() + datetime.timedelta ( seconds=N*30*24*60*60 )
如果你想 re-set 这个月,那就更难了,因为 leap-years 之类的问题,以及一个月中天数的变化。
year = now.year
month = now.month
day = now.day
hour = now.hour
minn = now.minute
sec = now.second
month = month + N
# some issues ... month > 12? day = 31 and month = 11?
# after you resolve them
future_time = datetime.datetime( year, month, day, hour, minn, sec)
(min
是 Python built-in。你可以覆盖它,但这不是好的做法。因此,minn
)