me encontré con un modelo como este:¿Cómo puedo usar el objeto F() para hacer esto con el ORM de Django?
class Task(models.Model):
timespan = models.IntegerField(null=True, blank=True)
class Todo(models.Model):
limitdate = models.DateTimeField(null=True, blank=True)
task = models.ForeignKey(Task)
necesito para extraer todo Todos
con un limitdate
que es menor o igual a la fecha de hoy + un intervalo de tiempo definido en el modelo Task
relacionados.
Algo así (ejemplo ficticio):
today = datetime.datetime.now()
Todo.objects.filter(limitdate__lte=today + F('task__timespan'))
Ahora, puedo hacer eso con un lazo pero estoy buscando una manera de hacerlo con F()
, y no puedo encontrar uno.
Estoy empezando a preguntarme si puedo hacer eso con F()
. Tal vez debería usar extra
?
Tenga en cuenta que no tengo el lujo de cambiar el código del modelo.
No probado, pero si task__timespan sería un timedelta, debería funcionar, ¿no puede agregar una función al modelo de tareas que devuelve self.timespan como timedelta? –
Estoy bastante seguro de que Django no te permite filtrar los resultados del método ;-) Incluso con un campo personalizado, no veo cómo se podría traducir esto a SQL. –
Por supuesto, tienes razón, tbh No creo que sea posible con F sin hackearlo –