PreSaveMiddleware

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
from django.dispatch import dispatcher
from django.db.models import signals

PRE_SAVE_REQUEST = None

class PreSaveMiddleware(object):
    """ 
    This bit of middleware just saves the request in a global variable
    that can be used to pass the request on to any pre_save methods in
    your models
    """

    def process_request(self, request):
        global PRE_SAVE_REQUEST
        PRE_SAVE_REQUEST = request

def pre_save(**kwargs):
    instance  = kwargs['instance']
    if getattr(instance, 'pre_save', None):
        instance.pre_save(PRE_SAVE_REQUEST)

dispatcher.connect(pre_save, signal=signals.pre_save)

More like this

  1. ImageField with per user folder by pigletto 5 years, 4 months ago
  2. keeping Model and Field History (everywhere) by buriy 4 years, 8 months ago
  3. another UserForeignKey by diverman 3 years, 10 months ago
  4. Friendly ID by willhardy 4 years, 5 months ago
  5. OwnerField by dune2 5 years, 5 months ago

Comments

(Forgotten your password?)