djblets.db.fields.modification_timestamp_field¶
Field for managing modification timestamps for a model.
- class ModificationState¶
Bases:
object
Modification state for a tracked value.
- first_set¶
Whether or not the next
setattr()
will be the first.When this is
True
, we do not consider the nextsetattr()
to be a modification since the field will be set during model initialization.- Type:
- __init__()¶
Initialize the state.
- static get_attr_name(field_name)¶
Return the attribute name for the state for the named field.
- Parameters:
field_name (
unicode
) – The attribute name of theModificationTimestampField
.- Returns:
The name of the modification state attribute.
- Return type:
- class ModificationTrackedValue(field_name, state_name)¶
Bases:
object
A descriptor for tracking the modification of a value.
- __init__(field_name, state_name)¶
Initialize the descriptor.
- __get__(instance, objtype=None)¶
Return the value.
- Parameters:
instance (
django.db.models.Model
) – The model instance.objtype (
type
, optional) – The model class.
- Returns:
The value.
- Return type:
- __set__(instance, value)¶
Set the value.
This tracks modifications and updates the state if this is not the first call to this method (which occurs during model initialization).
- Parameters:
instance (
django.db.models.Model
) – The instance to set the the value on.value (
datetime.datetime
) – The value to set.state.first_set:
- class ModificationTimestampField(*args, **kwargs)¶
Bases:
DateTimeField
A timestamp field that only updates existing objects or when None.
This is a subclass of
DateTimeField
that only auto-updates the timestamp when updating an existing object or when the value of the field is None. It’s similar to usingauto_now=True
, but custom timestamp values on new instances will not be replaced.- __init__(*args, **kwargs)¶
Initialize the field.
- contribute_to_class(cls, name)¶
Contribute the field attributes to the class.
- pre_save(model_instance, add)¶
Return the value of the field just before saving.
- Parameters:
model_instance (
django.db.models.Model
) – The model instance being saved.add (
bool
) – Whether this is being saved to the database for the first time.
- Returns:
The date/time value being saved.
- Return type: