1234567891011121314151617181920212223 |
- from django.db import models
- from django.core.exceptions import MultipleObjectsReturned
- class OrderManager(models.Manager):
- def get_order_by_cart(self, request):
- # short circuit if they don't have a session yet.
- if not request.session.session_key:
- # manually set it as modified so it gets created for us
- request.session.modified = True
- return None
- cart_id = request.session.session_key
- lookup_kwargs = {"cart_id": cart_id}
- try:
- order, new = self.get_or_create(**lookup_kwargs)
- # associate the order with the cart.
- if new:
- order.cart_id = cart_id
- order.save()
- except MultipleObjectsReturned:
- order = self.filter(**lookup_kwargs).order_by("id")[0]
- return order
|