Django 将筛选器()与值()一起使用时重复

Django 将筛选器()与值()一起使用时重复,django,django-models,filter,duplicates,django-queryset,Django,Django Models,Filter,Duplicates,Django Queryset,我有这3种型号: class Degrey(models.Model): name = models.CharField(max_length=200) class DegreyCompany(models.Model): withdegrey = models.ForeignKey(Degrey, on_delete=models.CASCADE, null=True, blank=True) company = models.ForeignKey(Secondary, o

我有这3种型号:

class Degrey(models.Model):
name = models.CharField(max_length=200)


class DegreyCompany(models.Model):
    withdegrey = models.ForeignKey(Degrey, on_delete=models.CASCADE, null=True, blank=True)
    company = models.ForeignKey(Secondary, on_delete=models.CASCADE, null=True, blank=True)
    spesial = models.ForeignKey('Spesial', on_delete=models.CASCADE, null=True, blank=True)
    name = models.CharField(max_length=200, default=withdegrey.name, null=True, blank=True)
    nomberetud = models.PositiveSmallIntegerField(null=True, blank=True)
    nomberexist = models.PositiveSmallIntegerField(null=True, blank=True)

    class Meta:
        unique_together = ('withdegrey', 'company', 'spesial'),

    def __str__(self):
        return self.name


class Secondary(models.Model):
    withprimary = models.OneToOneField(CustomUser, null=True, blank=True, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)
    codeonec = models.PositiveSmallIntegerField()
    codelocal = models.PositiveSmallIntegerField()
    address = models.CharField(max_length=200)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.name)
模型:

class MediaSecParnt(models.Model):
withdegrey = models.ForeignKey(Degrey, on_delete=models.CASCADE)
withsecondray = models.ForeignKey(Secondary, on_delete=models.CASCADE)
nomberesteda = models.PositiveIntegerField(null=1, blank=1)
nomberhodor = models.PositiveIntegerField(null=1, blank=1)
当使用queryset通过model-MediaSecParnt-访问的值时:

        listilam = MediaSecParnt.objects.filter(date__range=[primary1, primary2]).values(
            'withsecondray__name','withdegrey__name','withsecondray_id','withdegrey_id').annotate(nomberhodor=Sum('nomberhodor'), nomberesteda=Sum('nomberesteda'))
我得到了很好的结果,但当我想添加-nomberetud-如以下查询集:

        listilam = MediaSecParnt.objects.filter(date__range=[primary1, primary2]).values(
        'withsecondray__name', 'withdegrey__name', 'withsecondray_id', 'withdegrey_id','withsecondray__degreycompany__withdegrey_id').annotate(
        nomberhodor=Sum('nomberhodor'), nomberesteda=Sum('nomberesteda'),nberetud=Sum('withsecondray__degreycompany__nomberetud'))
这给了我duplucat的价值:

    <QuerySet [
{'withsecondray_id': 2, 'withdegrey_id': 1, 'withsecondray__degreycompany__withdegrey_id': 1, 'nomberhodor': 600, 'nomberesteda': 800, 'nberetud': 510},
 {'withsecondray_id': 2, 'withdegrey_id': 1, 'withsecondray__degreycompany__withdegrey_id': 2, 'nomberhodor': 600, 'nomberesteda': 800, 'nberetud': 1220}, 
{'withsecondray_id': 2, 'withdegrey_id': 2, 'withsecondray__degreycompany__withdegrey_id': 1, 'nomberhodor': 500, 'nomberesteda': 1000,'nberetud': 510}, 
{'withsecondray_id': 2, 'withdegrey_id': 2, 'withsecondray__degreycompany__withdegrey_id': 2, 'nomberhodor': 500, 'nomberesteda': 1000, 'nberetud': 1220}]>

使用secondray\uuuuu degreeycompany\uuuu nomberetud添加--in.values()使用假结果复制 如何使用ACCESnomberetud