翻译这个查询集?

Traslate this queryset?

我的查询是在 MYSQL 中进行的 我想知道如何将它翻译成 Django 的 ORM 谢谢你

SELECT *,(SELECT count(*)
FROM tesisnueva.donador_desactivar ds
where ds.motivo=1 and
ds.donador_id= dd.id and
date_add(ds.fecha_desactivar, INTERVAL 90 DAY)<now()) as cantidad
FROM tesisnueva.donador_donador dd 
where dd.genero='F';

我的模型

class Donador(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    hospital = models.ForeignKey(Hospital, null=True, blank=True, on_delete=models.SET_NULL)
    fecha_nacimiento = models.DateField(validators=[check_date])
    direccion = models.CharField(max_length=50,null=False,blank=False)
    genero = models.CharField( max_length=1 , choices = GENERO, default='M')
    grupo_sanguineo = models.CharField(max_length=10,choices=GRUPO_SANGRE, default='A')
    factor_RH = models.CharField(max_length=2, choices=FACTOR_SANGRE, default='+')
    telefono = models.CharField(max_length=12)
    activo = models.BooleanField(default=0)
    groups = models.ForeignKey(Group, null=True, blank=True, on_delete=models.CASCADE)


class Desactivar(models.Model):
    donador = models.ForeignKey(Donador,on_delete=models.CASCADE)
    motivo= models.IntegerField()
    fecha_desactivar=models.DateField()

您可以利用.annotate(…) [Django-doc] and use a filter=… parameter [Django-doc]来相应地过滤相关模型:

from datetime import timedelta
from django.db.models import Q
from django.utils.timezone import now

Donador.objects.filter(genero='F')<b>.annotate(</b>
    cantidad=Count(
        'desactivar',
        filter=<b>Q(motivo=1, fecha_desactivar=now()-timedelta(days=90))</b>
    )
<b>)</b>

由此查询集产生的 Donador 个对象有一个额外的属性 .cantidad,其中包含满足给定过滤器的相关 desactivar 个对象的数量。