如何计算填充在特定id中的数据字段,实现';计数';python django中excel中的行数据公式?
型号.py如何计算填充在特定id中的数据字段,实现';计数';python django中excel中的行数据公式?,python,django,excel,pandas,count,Python,Django,Excel,Pandas,Count,型号.py class Quality_Model(models.Model): name = models.ForeignKey(Members, blank=True, null=True, on_delete=models.CASCADE) year = models.IntegerField(default=0,blank=True) jan = models.DecimalField(max_digits = 5, decimal_places = 2, def
class Quality_Model(models.Model):
name = models.ForeignKey(Members, blank=True, null=True, on_delete=models.CASCADE)
year = models.IntegerField(default=0,blank=True)
jan = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
feb = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
mar = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
apr = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
mei = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
june = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
july = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
ags = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
sept = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
oct = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
nov = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
des = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
avg = models.DecimalField(max_digits = 5,decimal_places = 2,default=Decimal(0),blank=True,null=True)
@login_required(login_url = settings.LOGIN_URL)
def add_quality(request):
if request.method == 'POST':
form_data = request.POST
form = QualityForm(form_data)
if form.is_valid():
average_value = round((float(request.POST['jan'])+float(request.POST['feb'])+float(request.POST['mar'])+float(request.POST['apr'])+float(request.POST['mei'])+float(request.POST['june'])+float(request.POST['july'])+float(request.POST['ags'])+float(request.POST['sept'])+float(request.POST['oct'])+float(request.POST['nov'])+float(request.POST['des']))/12,2)
qualityinsform = Quality_Model(
name = Members.objects.get(pk=request.POST['name']),
year = request.POST['year'],
jan = request.POST['jan'],
feb = request.POST['feb'],
mar = request.POST['mar'],
apr = request.POST['apr'],
mei = request.POST['mei'],
june = request.POST['june'],
july = request.POST['july'],
ags = request.POST['ags'],
sept = request.POST['sept'],
oct = request.POST['oct'],
nov = request.POST['nov'],
des = request.POST['des'],
avg = average_value
)
qualityinsform.save()
return redirect('/quality-value/')
else:
form = QualityForm()
return render(request, 'add_quality.html', {'form':form})
视图.py
class Quality_Model(models.Model):
name = models.ForeignKey(Members, blank=True, null=True, on_delete=models.CASCADE)
year = models.IntegerField(default=0,blank=True)
jan = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
feb = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
mar = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
apr = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
mei = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
june = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
july = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
ags = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
sept = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
oct = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
nov = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
des = models.DecimalField(max_digits = 5, decimal_places = 2, default=Decimal(0), blank = True, null=True)
avg = models.DecimalField(max_digits = 5,decimal_places = 2,default=Decimal(0),blank=True,null=True)
@login_required(login_url = settings.LOGIN_URL)
def add_quality(request):
if request.method == 'POST':
form_data = request.POST
form = QualityForm(form_data)
if form.is_valid():
average_value = round((float(request.POST['jan'])+float(request.POST['feb'])+float(request.POST['mar'])+float(request.POST['apr'])+float(request.POST['mei'])+float(request.POST['june'])+float(request.POST['july'])+float(request.POST['ags'])+float(request.POST['sept'])+float(request.POST['oct'])+float(request.POST['nov'])+float(request.POST['des']))/12,2)
qualityinsform = Quality_Model(
name = Members.objects.get(pk=request.POST['name']),
year = request.POST['year'],
jan = request.POST['jan'],
feb = request.POST['feb'],
mar = request.POST['mar'],
apr = request.POST['apr'],
mei = request.POST['mei'],
june = request.POST['june'],
july = request.POST['july'],
ags = request.POST['ags'],
sept = request.POST['sept'],
oct = request.POST['oct'],
nov = request.POST['nov'],
des = request.POST['des'],
avg = average_value
)
qualityinsform.save()
return redirect('/quality-value/')
else:
form = QualityForm()
return render(request, 'add_quality.html', {'form':form})
根据我在上面创建的代码,在views.py文件中,我所能做的就是显示12个月分母的平均值。同时,我想要的条件是根据月数计算分母,每个月包含最小值0,以便将其计为分母
之后,未填写的月表(空白或空)将不作为分母计算。因此,将要计算的平均值基于其值填充为0-100的月份的值。如果在上图中显示的excel上下文中,“计数”公式将计算选定的列,该列的单元格中有一个值。因此,如果单元格为空白或已填充,则计算的平均值将存在差异。如果输入为12个月,分母将为12,如果在一行中仅输入10个月,则分母为10,依此类推。也许你们有办法解决我的问题