tags:

views:

55

answers:

1
z = Pokes.objects.filter(
    pokestiming__when_start__lte=datetime.now(), 
    pokestiming__when_end__gte=datetime.now(),
    pokestiming__next_poke__lte=datetime.now(),
    poke_deleted=0,
    poke_operating=1,
)

That's a query I'm using. It selects any Poke object, with a PokesTiming object (foreign key) within the date ranges. It's basically a start date and expiry date.

Problem is, passing datetime.now(), and even though it seems to be the exact same syntax in the django docs, the SQL result is:

SELECT [fieldnames] FROM pokes INNER JOIN pokes_timing ON (pokes.id = pokes_timing.poke_id) WHERE (pokes.poke_deleted = 0 AND pokes_timing.when_start <= 2010-02-01 00:00:00 AND pokes_timing.next_poke <= 2010-02-01 13:50:48 AND pokes_timing.when_end >= 2010-02-01 13:50:48 AND pokes.poke_operating = 1 ) LIMIT 21

That is, the dates passed are just dates, not wrapped in string quotes, which results in an error and no results. That query ^ was retrieved by this method

I'm sure I'm missing something silly


Models:

class Pokes(models.Model):
    poke_title = models.CharField(max_length=135)
    poke_text = models.TextField()
    poke_email = models.CharField(max_length=450)
    poke_email_verified = models.IntegerField(null=True, blank=True)
    poke_key = models.CharField(max_length=30)
    poke_operating = models.IntegerField(default=0)
    poke_deleted = models.IntegerField(default=0)

    class Meta:
        db_table = u'pokes'

    def __unicode__(self):
        return self.poke_title

class PokesTiming(models.Model):
    poke = models.ForeignKey(Pokes)
    interval_min = models.IntegerField(null=True, default=30)
    interval_max = models.IntegerField(null=True, default=120)
    when_start = models.DateTimeField()
    when_end = models.DateTimeField()
    last_run = models.DateTimeField()
    is_single = models.IntegerField(default=0)
    next_poke = models.DateTimeField()

    class Meta:
        db_table = u'pokes_timing'

    def __unicode__(self):
        return self.poke
A: 

Bah - Must have just been me. It seems to work through Django now (the test data I have must have been wrong - it returns a result now) but the raw SQL query doesn't work. I guess Django does something to it before it's executed? Either way it seems to be working.

damnitshot