我需要计算目标和显示的百分比



我在Django上做应用程序,确切地说,只是在学习,我有一个问题,我做待办事项列表,它有一个目标,每个目标都有实现这个目标的步骤,可以有无限的数量。好吧,我需要计算目标和显示的百分比,即计算kollichesvo执行的次数(已经实现)并除以阶段总数。问题来了。

型号:

class Post(models.Model):
    author = models.ForeignKey(User)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)
    def publish(self):
        self.published_date = timezone.now()
        self.save()
    def __str__(self):
        return self.title
class Stage(models.Model):
    keys = models.ForeignKey(Post)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField()
    end = models.BooleanField(default=False)
    procent = models.IntegerField(default=0)
    def publish(self):
        self.published_date = timezone.now()
        self.save()
    def __str__(self):
        return self.title

视图

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    posts = Stage.objects.filter(keys__exact=pk,)        
    return render(request, 'blog/post_detail.html', {'post': post, 'posts': posts})

本例

x = len(posts)
for m in posts:
    if end == True:
        ar = ar + 1
stages = (ar / x * 100)

向类中添加一个方法:

class Post(models.Model):
    # ...
    def percentage_complete(self):
        total = self.stage_set.count()
        completed = self.stage_set.filter(end=True).count()
        return (float(completed) / total) * 100

在您的模板中,假设您有一个post上下文变量:

% done: {{ post.percentage_complete }}

最新更新