Slightly refactored metasystem -- changed Field pre_save() hooks to pre_save_add(), in preparation for some bigger changes. Refs #81.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@455 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2005-08-10 03:44:51 +00:00
parent 258e6bc330
commit 6d234fae8c
2 changed files with 10 additions and 9 deletions

View File

@ -718,8 +718,9 @@ def method_save(opts, self):
non_pks = [f for f in opts.fields if not f.primary_key] non_pks = [f for f in opts.fields if not f.primary_key]
cursor = db.db.cursor() cursor = db.db.cursor()
add = not bool(getattr(self, opts.pk.name)) add = not bool(getattr(self, opts.pk.name))
if add:
for f in non_pks: for f in non_pks:
f.pre_save(self, getattr(self, f.name), add) f.pre_save_add(self, getattr(self, f.name))
db_values = [f.get_db_prep_save(getattr(self, f.name)) for f in non_pks] db_values = [f.get_db_prep_save(getattr(self, f.name)) for f in non_pks]
# OneToOne objects are a special case because there's no AutoField, and the # OneToOne objects are a special case because there's no AutoField, and the
# primary key field is set manually. # primary key field is set manually.

View File

@ -82,10 +82,10 @@ class Field(object):
else: else:
self.db_index = db_index self.db_index = db_index
def pre_save(self, obj, value, add): def pre_save_add(self, obj, value):
""" """
Hook for altering the object obj based on the value of this field and Hook for altering the object obj based on the value of this field,
and on the add/change status. during the add stage.
""" """
pass pass
@ -280,8 +280,8 @@ class DateField(Field):
value = str(value) value = str(value)
return Field.get_db_prep_lookup(self, lookup_type, value) return Field.get_db_prep_lookup(self, lookup_type, value)
def pre_save(self, obj, value, add): def pre_save_add(self, obj, value):
if self.auto_now or (self.auto_now_add and add): if self.auto_now or self.auto_now_add:
setattr(obj, self.name, datetime.datetime.now()) setattr(obj, self.name, datetime.datetime.now())
def get_db_prep_save(self, value): def get_db_prep_save(self, value):
@ -483,8 +483,8 @@ class TimeField(Field):
value = str(value) value = str(value)
return Field.get_db_prep_lookup(self, lookup_type, value) return Field.get_db_prep_lookup(self, lookup_type, value)
def pre_save(self, obj, value, add): def pre_save_add(self, obj, value):
if self.auto_now or (self.auto_now_add and add): if self.auto_now or self.auto_now_add:
setattr(obj, self.name, datetime.datetime.now().time()) setattr(obj, self.name, datetime.datetime.now().time())
def get_db_prep_save(self, value): def get_db_prep_save(self, value):