Comment compter les objets dans django

phagyrhe

Merci à tous de toujours partager vos connaissances ici.

J'ai un problème avec le comptage d'un objet dans Django. J'apprends et travaille actuellement sur un système RH de base et j'ai déjà mis en place mes points de vue, mes modèles et autres. Je prévois d'avoir une interface qui me permettra d'imprimer le nombre d'employés en fonction du sexe. Celui que j'ai actuellement mis en place augmente le nombre d'hommes et de femmes chaque fois que je crée un nouvel employé. S'il vous plaît, comment puis-je corriger cette anomalie?

views.py

from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.shortcuts import render
from django_tables2 import RequestConfig
from django_tables2.export import TableExport

from .models import Employee
from .models import EmployeeFilter
from .tables import EmployeeTable

@login_required()
def employees(request):
    filter = EmployeeFilter(request.GET, queryset=Employee.objects.all())
    table = EmployeeTable(filter.qs)
    RequestConfig(request, paginate={"per_page": 15}).configure(table)
    count = Employee.objects.all().count()
    male_count = Employee.objects.filter(gender__contains='Male').count()
    female_count = Employee.objects.filter(gender__contains='Female').count()
    user_count = User.objects.all().count()

    export_format = request.GET.get("_export", None)

    if TableExport.is_valid_format(export_format):
        exporter = TableExport(export_format, table)
        return exporter.response("table.{}".format("csv", "xlsx"))

    return render(request, "employees/employees.html", {
        "table": table,
        "filter": filter,
        "count": count,
        "male_count": male_count,
        "female_count": female_count,
        "user_count": user_count,
    })

template.html

{% extends "employees/base.html" %}
{% load render_table from django_tables2 %}
{% load django_tables2 %}
{% load querystring from django_tables2 %}
{% block content %}
<!--Data overview-->
    <div class="container data overview">
        <div class="row">
            <div class="col-md-3">
                <div class="container-fluid bg-warning data-ov-container">
                    <div class="row">
                        <div class="col-8">
                            <h6 class="data-heading font-weight-bold">Total Employees</h6>
                            <p class="data-text ">{{ count }}</p>
                        </div>

                        <div class="col-4">
                            <i class="fas fa-users data-icon"></i>
                        </div>
                    </div>
                </div>
            </div>

            <div class="col-md-3">
                <div class="container-fluid bg-dark data-ov-container">
                    <div class="row">
                        <div class="col-9">
                            <h6 class="data-heading text-white font-weight-bold">Male Employees</h6>
                            <p class="data-text text-white">{{ male_count }}</p>
                        </div>

                        <div class="col-3">
                            <i class="fas fa-male data-icon text-white"></i>
                        </div>
                    </div>
                </div>
            </div>

            <div class="col-md-3">
                <div class="container-fluid bg-danger data-ov-container">
                    <div class="row">
                        <div class="col-9">
                            <h6 class="data-heading text-white font-weight-bold">Female Employees</h6>
                            <p class="data-text text-white">{{ female_count }}</p>
                        </div>

                        <div class="col-3">
                            <i class="fas fa-female data-icon text-white"></i>
                        </div>
                    </div>
                </div>
            </div>

            <div class="col-md-3">
                <div class="container-fluid bg-secondary data-ov-container">
                    <div class="row">
                        <div class="col-8">
                            <h6 class="data-heading text-white font-weight-bold">Active Users</h6>
                            <p class="data-text text-white">{{ user_count }}</p>
                        </div>

                        <div class="col-4">
                            <i class="fas fa-users-cog data-icon text-white"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!--Employees data-->
    <div class="filter-container container-fluid">
        <div class="row">
            <div class="col-md-9">
                <!--filter form-->
                <form action="" class="form form-inline employee-filter-form" method="get">
                    <legend class="mb-2">Filter employee records</legend>
                    {{ form.non_field_errors }}
                    <div class="fieldWrapper">
                        {{ filter.form.first_name.errors }}
                        {{ filter.form.first_name }}
                    </div>
                    <div class="fieldWrapper">
                        {{ filter.form.last_name.errors }}
                        {{ filter.form.last_name }}
                    </div>
                    <button aria-expanded="false" aria-haspopup="true"
                            class="ml-2 btn btn-danger filter-btn" type="submit">
                        Filter
                    </button>
                </form>
            </div>

            <div class="col-md-3 download-btn-col">
                <button aria-expanded="false" aria-haspopup="true"
                        class="mr-3 btn btn-success" type="submit">
                    <i class="fas fa-upload"></i> Import
                </button>
                <div class="btn-group download-btn">
                    <button aria-expanded="false" aria-haspopup="true"
                            class="btn btn-warning dropdown-toggle"
                            data-toggle="dropdown" type="button">
                        <i class="fas fa-file-export"></i> Export
                    </button>
                    <div class="dropdown-menu">
                        <a class="dropdown-item" href="{% querystring '_export'='csv' %}">csv</a>
                        <a class="dropdown-item" href="{% querystring '_export'='xlsx' %}">xlsx</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- data rendered here -->
    {% render_table table 'django_tables2/bootstrap.html' %}
    <!-- data rendered here -->
    {% endblock content %}

models.py

...
GENDER_CHOICES = (
    ('FEMALE', 'Female'),
    ('MALE', 'Male'),
    ("DWTS" "Don't want to say"),
)
...
@python_2_unicode_compatible
class Employee(models.Model):
    # basic information of employee
    first_name = models.CharField(_('first name'), max_length=40)
    last_name = models.CharField(_('last name'), max_length=40)
    emp_photo = models.ImageField(_('passport'))
    date_of_birth = models.DateField(_('birthday'))
    gender = models.CharField(_('gender'), max_length=15, choices=GENDER_CHOICES, default=['MALE', 'Male'])
    house_address = models.CharField(_('house address'), max_length=100)
    city_of_residence = models.CharField(_('city'), max_length=100)
    state_of_residence = models.CharField(_('state'), max_length=100, choices=NIGERIAN_STATE_CHOICES)
    country_of_residence = models.CharField(_('country'), max_length=100, choices=COUNTRY_CHOICES,
                                            default=[156, 'Nigeria'])
    state_of_origin = models.CharField(_('state of origin'), max_length=100, choices=NIGERIAN_STATE_CHOICES)

    class Meta:
        verbose_name = _('Employee')
        verbose_name_plural = _('Employees')

    def __str__(self):
        return "{} {}".format(self.first_name, self.last_name)

@python_2_unicode_compatible
class EmployeeFilter(django_filters.FilterSet):
    first_name = django_filters.CharFilter(lookup_expr='iexact', widget=TextInput(
        attrs={'placeholder': 'First name', 'class': 'input_search'}))
    last_name = django_filters.CharFilter(lookup_expr='iexact',
                                          widget=TextInput(attrs={'placeholder': 'Last name', 'class': 'input_search'}))

    class Meta:
        model = Employee
        fields = ["first_name", "last_name", ]
Sergey Pugach

Je pense que vous devez supprimer containsde votre filtre:

male_count = Employee.objects.filter(gender='Male').count()
female_count = Employee.objects.filter(gender='Female').count()

Ou faites une seule demande:

male_femail_count = Employee.objects.values('gender').annotate(count=Count('id'))
# result
# [{'gender': 'Male', 'count': 2}, {'gender': 'Female', 'count': 3}]

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

R: compter les objets dans la liste des colonnes

Comment compter le nombre d'objets créés dans Ruby

Compter les choix dans django

Compter les objets de vérité dans un tableau

Comment ne pas compter les espaces vides dans StringTokenizer

Comment compter les occurrences dans plusieurs colonnes en SQL

Django comment vérifier si les objets contiennent une chaîne dans plusieurs champs

compter les occurrences de deux clés dans les objets du tableau

Comment compter les mêmes valeurs dans un dict?

Comment compter les nombres consécutifs dans un tableau?

Comment compter les lignes dans un vecteur logique

Comment compter les correspondances regex dans Rust?

Comment compter les uniques et les doublons dans MySql

Pandas - Compter les objets

XQuery comment compter tous les "sorts" dans JSON

Comment compter les événements uniques dans Access?

Google Sheets: comment compter les valeurs correspondantes dans 2 colonnes

Compter les objets renvoyés par les travaux dans PowerShell?

Comment compter les collisions dans unordered_set c ++

Elixir: comment compter les URL dans une chaîne

Comment filtrer les objets par objets dans Js

Comment compter les heures dans les intervalles donnés

PowerShell - Comment compter les objets?

Comment corriger l'organisation des objets par date dans les vues basées sur les classes dans Django

Comment compter le nombre d'objets (listes) dans un vecteur?

Comment compter les champs dans une agrégation MongoDB?

Comment compter les occurrences dans une colonne dataframe Python

comment compter les lignes avec des cellules vides dans datagridview

Comment regrouper et compter les objets par propriété dans une liste?

TOP Lista

CalienteEtiquetas

Archivo