我需要显示在Django管理网站摘要报告。如何计算性别状态为0或1的用户数
我正在覆盖change_list.html,下面是我在admin.py文件中的内容我需要显示在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
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,我已经添加了我的模型。