Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
我需要显示在Django管理网站摘要报告。如何计算性别状态为0或1的用户数_Django_Python 3.x_Django Admin - Fatal编程技术网

我需要显示在Django管理网站摘要报告。如何计算性别状态为0或1的用户数

我需要显示在Django管理网站摘要报告。如何计算性别状态为0或1的用户数,django,python-3.x,django-admin,Django,Python 3.x,Django Admin,我正在覆盖change_list.html,下面是我在admin.py文件中的内容 class MyHelperGenderAdmin(admin.ModelAdmin): change_list_template = 'admin/helper_chart_change_list.html' date_hierarchy = 'created_at' list_filter = ('gender', 'created_at') def changelist_v

我正在覆盖change_list.html,下面是我在admin.py文件中的内容

class MyHelperGenderAdmin(admin.ModelAdmin):
    change_list_template = 'admin/helper_chart_change_list.html'
    date_hierarchy = 'created_at'
    list_filter = ('gender', 'created_at')

    def changelist_view(self, request, extra_context=None):
        response = super().changelist_view(request, extra_context=extra_context, )
        try:
            qs = response.context_data['cl'].queryset
        except (AttributeError, KeyError):
            return response

        metrics = {
            'male': Count('gender', gender=1),
            'female': Count('gender', gender=0),
            'total_helpers': Count('id')
        }

        response.context_data['helper'] = list(
            qs.values('gender').annotate(**metrics).order_by('-male')
        )
        return response

    def has_add_permission(self, request):
        return False


admin.site.register(MyHelperChart, MyHelperGenderAdmin)
在我的度量词典中,我需要一种方法来计算性别为0或1的位置。目前,count方法统计性别地位的所有方面

这是我的模型:

class Helper(auth.models.User):
    MALE = 1
    FEMALE = 0

    GENDER_CHOICES = (
        (MALE, 'Male'),
        (FEMALE, 'Female')
    )
    phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
                                 message=
                                 "Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed."
                                 )
    phone_number = models.CharField(validators=[phone_regex], max_length=15, blank=True, unique=True, null=True)
    gender = models.IntegerField(choices=GENDER_CHOICES, default=MALE, null=True)
    birthdate = models.DateField(blank=True, null=True)
    facebook_id = models.CharField(max_length=200, blank=True, null=True)
    google_id = models.CharField(max_length=200, blank=True, null=True)
    lng = models.FloatField(blank=True, null=True)
    lat = models.FloatField(blank=True, null=True)
    country = models.ForeignKey(Country, blank=True, null=True)
    image = models.ImageField(
        upload_to=upload_location,
        null=True, blank=True,
        width_field="width_field",
        height_field="height_field")
    height_field = models.IntegerField(default=0)
    width_field = models.IntegerField(default=0)
    updated_at = models.DateTimeField(auto_now=True)
    created_at = models.DateTimeField(auto_now=False, auto_now_add=True)

    class Meta:
        verbose_name_plural = "Helpers"

    def __str__(self):
        return self.first_name


class MyHelperChart(Helper):
    class Meta:
        proxy = True
        verbose_name = 'Helper Gender Summmary'
        verbose_name_plural = 'Helpers Gender Summaries'

我已经创建了一个代理模型,我将在Django管理员中使用该模型,以便显示数据摘要和图表。

您需要做的就是在男性和女性指标中添加一个案例。下面是一个示例,然后您可以对female=0执行相同的操作:

从django.db.models导入Case,When,IntegerField
类MyHelperGenderAdmin(admin.ModelAdmin):
...
指标={
...
“男性”:计数(大小写)(
当(性别=1,那么=1),
输出\字段=IntegerField()),
...

}
你能添加你的模型吗?你好,scharette,我已经添加了我的模型。