我正在开发一个网络应用程序,它可以让项目经理在完成一项任务/工作后给供应商打分models.py。
class Rating(models.Model):
RATE_CHOICES = [
(1, 'Below Expectation greater than 0.02'),
(2, 'Meet Expectaion 0.02'),
(3, 'Exceed Expectaions less than 0.02'),
]
reviewer = models.ForeignKey(CustomUser, related_name="evaluator",
on_delete=models.CASCADE, null=True, blank=True)
reviewee = models.ForeignKey(Vendor, null=True, blank=True,
related_name="evaluated_vendor", on_delete=models.CASCADE)
job = models.ForeignKey(Job, on_delete=models.CASCADE, null=True, blank=True,
related_name='jobrate')
date = models.DateTimeField(auto_now_add=True)
text = models.TextField(max_length=200, blank=True)
rate = models.PositiveSmallIntegerField(choices=RATE_CHOICES)
class Job(models.Model):
title = models.CharField(null=True, blank=True, max_length=100)
project_manager = models.ForeignKey(CustomUser, on_delete = models.CASCADE,
related_name="assigned_by")
startDate = models.DateField(blank=True, null=True)
deadlineDate = models.DateField(blank=True, null=True)
status = models.CharField(choices=STATUS, default='In Preparation', max_length=100)
evaluated = models.BooleanField(default=False)
#Related Fields
purchaseOrder = models.ForeignKey(PurchaseOrder, blank=True, null=True,
on_delete=models.CASCADE)
project = models.ForeignKey(Project, blank=True, null=True,
on_delete=models.CASCADE, related_name="Main_Project")
assigned_to = models.ForeignKey(Vendor, blank=True, null=True,
on_delete=models.CASCADE, related_name="Job_owner")
class Vendor(models.Model):
#Basic Fields.
vendorName = models.CharField(null=True, blank=True, max_length=200)
addressLine1 = models.CharField(null=True, blank=True, max_length=200)
country = models.CharField(blank=True, choices=COUNTRY_CHOICES, max_length=100)
postalCode = models.CharField(null=True, blank=True, max_length=10)
phoneNumber = models.CharField(null=True, blank=True, max_length=100)
emailAddress = models.CharField(null=True, blank=True, max_length=100)
taxNumber = models.CharField(null=True, blank=True, max_length=100)
mother_language = models.CharField(blank=True, choices=LANGUAGE_CHOICES,
max_length=300)
这是我的view.py:
@login_required
def vendors(request):
context = {}
vendors = Vendor.objects.all()
context['vendors'] = vendors
if request.method == 'GET':
form = VendorForm()
context['form'] = form
return render(request, 'projects/vendors.html', context)
if request.method == 'POST':
form = VendorForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, 'New Vendor Added')
return redirect('vendors')
else:
messages.error(request, 'Problem processing your request')
return redirect('vendors')
return render(request, 'projects/vendors.html', context)
然后在我的HTML中,我希望在平均比率列中呈现给定供应商完成的多个作业的平均评级。例如,如果供应商完成了2个作业,并分别获得评级1和2。供应商的平均比率将是1.5。我希望表格显示此平均比率。
下面是我在HTML中的当前设置:
<table class="table table-striped table-sm">
<thead>
<tr>
<th scope="col">Vendor Name</th>
<th scope="col">Mother Tongue</th>
<th scope="col"> Average Rating</th>
<th scope="col">Email Address</th>
<th scope="col">Phone Number</th>
<th scope="col">Address Line</th>
<th scope="col">Country</th>
</tr>
</thead>
<tbody>
{% for vendor in vendors %}
<tr>
<td>{{vendor.vendorName}}</td>
<td>{{vendor.mother_language}}</td>
<td>{{vendor.averagerating | stringformat:".2f"}}</td>
<td>{{vendor.emailAddress}}</td>
<td>{{vendor.phoneNumber}}</td>
<td>{{vendor.addressLine1}}</td>
<td>{{vendor.country}}</td>
</tr>
{% endfor %}
</tbody>
</table>
因此,问题是我如何获得给定供应商完成的所有工作的平均评级,并将其显示在我的供应商列表中。请注意,平均评级列当前未显示任何内容,它是空的。我们将感谢您的回答。提前感谢。
2条答案
按热度按时间jm81lzqq1#
用相关评级对象的平均值注解视图中的
vendors
。请参阅文档的这一部分以了解其工作原理的详细信息。
nkkqxpd92#
与AKX相关的帖子:您还可以尝试从Rating模型中获取聚合,如下所示: