¿Cómo escribiría la siguiente consulta SQL en Django?
SELECT COUNT(*) FROM accounts_transactions LEFT JOIN accounts_notes ON accounts_notes.accounts_core_id = accounts_transactions.accounts_core_id WHERE email_status='clicked' AND email_template_id IS NOT NULL AND accounts_transactions.creation_date >= accounts_notes.creation_date AND accounts_transactions.creation_date <= accounts_notes.creation_date + INTERVAL 7 DAY;La forma en que se estructuran los modelos son.
Account(model): id AccountTransactions(model): creation_date account_core_id = Account AccountNote(model): account_core_id = Account creation_date email_status email_templateLa consulta funciona bien, pero parece que no puedo averiguar cómo escribir esto en django. Leyendo sobre la captación previa relacionada, pero no veo cómo lo hago, ya que no hay una conexión directa entre la nota y la transacción.
Actualización: SOLUCIÓN
queryset = AccountTransaction.objects.filter( account__note__email_template__isnull=False, account__note__email_status='clicked', creation_time__gte=F('account__note__creation_time'), creation_time__lte=F( 'account__note__creation_time') + timedelta(days=7) )Use .raw() para escribir una consulta sql.
queryset = AccountTransaction.objects.raw("Sql query here")