我試圖獲取專案從開始日期到結束日期的月份差異,并將其計算為每月更新以顯示專案進度的百分比,但我當前的代碼沒有計算價值。如果我洗掉 .month 它會說 /: 'int' 和 'datetime.timedelta' 的運算元型別不受支持
模型.py
class Projects(models.Model):
id=models.AutoField(primary_key=True)
project_name=models.CharField(max_length=255)
project_manager=models.ForeignKey(CustomUser,on_delete=models.CASCADE, limit_choices_to={'is_project_manager' : True})
client_name=models.ForeignKey(Clients,on_delete=models.CASCADE, null=True)
project_pic=models.ImageField(upload_to='static/website/project-images')
project_start_date=models.DateField(null=True)
project_end_date=models.DateField(null=True)
project_description=models.TextField(null=True)
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
is_draft = models.BooleanField(default=True)
objects=models.Manager()
class Meta:
verbose_name_plural = 'Project'
def __str__(self):
return f'{self.project_name}'
class MonthlyProjectStatus(models.Model):
id=models.AutoField(primary_key=True)
project_name=models.ForeignKey(Projects,on_delete=models.CASCADE)
project_manager=models.ForeignKey(CustomUser,on_delete=models.CASCADE, null=True)
client_name=models.ForeignKey(Clients,on_delete=models.CASCADE, null=True)
attachments=models.FileField(upload_to='static/website/files', null=True)
project_update=models.TextField(null=True)
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
is_draft = models.BooleanField(default=True)
class Meta:
verbose_name_plural = 'Monthly Status'
def __str__(self):
return f'{self.project_name}'
視圖.py
def project_details(request, pk):
projects = Projects.objects.get(id=pk)
employed = Employee.objects.filter(project_site=projects)
invents = Project_Inventory.objects.filter(project_site=projects)
months = MonthlyProjectStatus.objects.filter(project_name=projects).count()
dt = projects.project_start_date.month - projects.project_end_date.month
sums = (months)/(dt) * 100
context = {
'projects' : projects,
'employed' : employed,
'invents' : invents,
'dt' : dt,
'months' : months,
'sums' : sums,
}
template_name ='project-admin/project-details.html'
return render(request, template_name, context)
uj5u.com熱心網友回復:
兩個日期之間的差異是timedelta. 您可以將其轉換為天數。
d1 = datetime.date(2020,1,1)
d2 = datetime.date(2021,1,1)
dd = d2-d1
days = dd.days # 366
它不支持轉換為月份,因為一個月有多長?你可以除以 30 得到一個近似值,或者在幾天內作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/422724.html
標籤:
下一篇:無法從用戶那里獲取日歷API事件
