Saya membuat aplikasi yang memperoleh data dan kemudian menampilkannya melalui grafik, masalahnya adalah saya membuat kueri untuk mengetahui kapan pengembang menjadi bagian dari suatu proyek, tetapi itu memberi saya kesalahan Saya tidak setuju bahwa objek ManyToManyDescriptor tidak memiliki filter atribut.

Pandangan ku:

class ProjectTemplateView(TemplateView):
    template_name = 'index.html'

    def count_developer(self):
        projects = Project.objects.all()
        for project in projects:
            developers = Developer.project_set.filter(project=project).count()
            print(developers)


    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['projects'] = Project.objects.all()
        context['developers'] = self.count_developer()

        return context

Ini adalah model proyek saya:

class Project(models.Model):
    STATUS_CHOICES = (
        ('approver', 'Aprovado'),
        ('process', 'En Proceso'),
        ('inactive', 'Inactivo'),
    )

    name = models.CharField(max_length=50, unique=True, verbose_name='Nombre')
    developer = models.ManyToManyField(Developer, verbose_name='Desarrollador')
    visibility = models.BooleanField(default=False, verbose_name='Visibilidad')
    status = models.CharField(
        max_length=10, choices=STATUS_CHOICES, verbose_name='Estatus')
    slug = models.SlugField(max_length=50, unique=True)
    created_at = models.DateTimeField(
        auto_now_add=True, verbose_name='Fecha de Creacion')
    update_at = models.DateTimeField(
        auto_now=True, verbose_name='Fecha de Actualizacion')

Dan ini adalah model pengembang saya:

class Developer(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='Fecha de Creacion')
0
cosmos multi 20 November 2020, 21:11

1 menjawab

Jawaban Terbaik

Ini mungkin berguna.

def count_developer(self):
    projects = Project.objects.all()
    for project in projects:
        developers = project.developer.all()
        # give you whole queryset
        print(developers)
        # will give you count
        print(developers.count())

Hal lain Anda harus mengembalikan pengembang dari fungsi count_developer sehingga Anda bisa mendapatkan jumlah pengembang dalam template.

1
Hamza Lachi 20 November 2020, 18:39