Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 值为True时计算django字段并显示此计数_Python_Django - Fatal编程技术网

Python 值为True时计算django字段并显示此计数

Python 值为True时计算django字段并显示此计数,python,django,Python,Django,我在Django有一个模型,里面有项目和任务。一个项目可以有许多任务,以下是我的模型: class Project(models.Model): project_name = models.CharField(max_length=200) is_complete = models.BooleanField(default=False) def __str__(self): return self.project_name class Task(mod

我在Django有一个模型,里面有
项目
任务
。一个项目可以有许多任务,以下是我的模型:

class Project(models.Model):
    project_name = models.CharField(max_length=200)
    is_complete = models.BooleanField(default=False)
    def __str__(self):
        return self.project_name


class Task(models.Model):
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    task_name = models.CharField(max_length=100)
    task_desc = models.TextField(max_length=600)
    due_date = models.DateField('due date')
    is_complete = models.BooleanField(default=False)

    task_desc.short_description = "Task description"
    def __str__(self):
        return self.task_name
我想在项目旁边显示总任务数和总完成任务数。我已将以下内容添加到我的admin.py中,以显示每个项目的总任务数:

def project_task_count(self, obj):
    return obj.task_set.count()
我怎样才能将只完成任务的计数添加到管理中,并复制这种方法在网站上显示这些计数,而不仅仅是在管理面板中

我已尝试将此添加到我的模型中,但不起作用:

def num_complete(self, obj):
    return self.is_complete.count()

您可以在
项目中添加属性方法,如下所示:

class Project(models.Model):
    project_name = models.CharField(max_length=200)
    is_complete = models.BooleanField(default=False)
    def __str__(self):
        return self.project_name

    @property
    def num_completed(self):
        self.task_set.filter(is_complete=True).count()
@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    ...
    readonly_fields = ["num_completed"]
并将该属性添加到Adminsite的中,如下所示:

class Project(models.Model):
    project_name = models.CharField(max_length=200)
    is_complete = models.BooleanField(default=False)
    def __str__(self):
        return self.project_name

    @property
    def num_completed(self):
        self.task_set.filter(is_complete=True).count()
@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    ...
    readonly_fields = ["num_completed"]

您可以在
项目中添加属性方法,如下所示:

class Project(models.Model):
    project_name = models.CharField(max_length=200)
    is_complete = models.BooleanField(default=False)
    def __str__(self):
        return self.project_name

    @property
    def num_completed(self):
        self.task_set.filter(is_complete=True).count()
@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    ...
    readonly_fields = ["num_completed"]
并将该属性添加到Adminsite的中,如下所示:

class Project(models.Model):
    project_name = models.CharField(max_length=200)
    is_complete = models.BooleanField(default=False)
    def __str__(self):
        return self.project_name

    @property
    def num_completed(self):
        self.task_set.filter(is_complete=True).count()
@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    ...
    readonly_fields = ["num_completed"]
如果obj是所有任务的查询集
obj=Task.objects.all()

如果obj是所有已完成任务的查询集
obj=task.objects.filter(is_complete=True)

如果obj是所有任务的查询集
obj=Task.objects.all()


如果obj是所有已完成任务的查询集
obj=task.objects.filter(is_complete=True)

谢谢,这让我回到了正轨!谢谢,这让我回到了正轨!