Hello,

my models.py:
--------------------------------------------------------------------
from django.db import models
from django.db.models import Q
import datetime

class Order(models.Model):
       when = models.DateTimeField(blank=False)

       def __str__(self):
               return str(self.id)

ORDER_PENDING_PERIOD=60

class AvailableOfferManager(models.Manager):
       def get_query_set(self):
               return super(AvailableOfferManager,
self).get_query_set().filter(availability__gte=datetime.date.today())

       def get_order_free(self):
               return self.filter(order__isnull=True)
       def get_order_pending(self):
               return
self.filter(order__when__gte=datetime.datetime.now()-datetime.timedelta(minutes=ORDER_PENDING_PERIOD))
       def get_order_free_and_pending(self):
               return self.filter(
                               Q(order__isnull=True) |
Q(order__when__gte=datetime.datetime.now()-datetime.timedelta(minutes=ORDER_PENDING_PERIOD))
                                       )

class Offer(models.Model):
       availability = models.DateField(blank=False)
       name = models.CharField(maxlength=20, blank=False)
       order = models.ForeignKey(Order, blank=True, null=True)

       objects = models.Manager()
       available = AvailableOfferManager()

       def __str__(self):
               return str(self.id)
----------------------------------------------

(this is just an example, not the full model)
There are some offers. When someone is intereseted in product/offer he
makes reservation which makes that:
1. New Order record is created and for the Offer instance a ForeignKey
is set to the newly created Order.

I'm going to display only offers from >=today (though I will be
deleting old offers withour reservation).
That's why I've created the "available" model manager.

Now, when displaying offers I would like to display offers with
availabililty >=today and offers with are not having
reservation yet, or these for which reservation has been made less then
60 minutes ago.

That's why I'm trying to use "get_order_free_and_pending()".

The problem is that for this queryset it only displays offer for which
no reservation has been made.

If I change the the order of Q |Q representaion in
get_order_free_and_pending() I only get offers for which reservation
has been made less then 60minutes ago.

I can't get both at once.
Can I use Q() or other filterings to get all (not yet reserved &
recently reserved) offers ?

DB: Sqlite3 (winxp).

Thanks,

Robert


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to