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
-~----------~----~----~----~------~----~------~--~---