def get_prepared_db_value(connection, instance, field, raw=False): value = ( getattr(instance, field.attname) if raw else field.pre_save(instance, instance._state.adding) ) # If value is None, but there is a default, and the field is # not nullable then we should populate it # Otherwise thing get hairy when you add new fields to models if value is None and field.has_default() and not field.null: value = field.get_default() if isinstance(value, BaseExpression): from djangae.db.backends.appengine.expressions import evaluate_expression # We can't actually support F expressions on the datastore, but we can simulate # them, evaluating the expression in place. # TODO: For saves and updates we should raise a Warning. When evaluated in a filter # we should raise an Error value = evaluate_expression(value, instance, connection) if hasattr(value, "prepare_database_save"): value = value.prepare_database_save(field) else: value = field.get_db_prep_save( value, connection=connection ) value = connection.ops.value_for_db(value, field) return value
def get_prepared_db_value(connection, instance, field, raw=False): value = getattr(instance, field.attname) if raw else field.pre_save(instance, instance._state.adding) if isinstance(value, BaseExpression): from djangae.db.backends.appengine.expressions import evaluate_expression # We can't actually support F expressions on the datastore, but we can simulate # them, evaluating the expression in place. # TODO: For saves and updates we should raise a Warning. When evaluated in a filter # we should raise an Error value = evaluate_expression(value, instance, connection) if hasattr(value, "prepare_database_save"): value = value.prepare_database_save(field) else: value = field.get_db_prep_save(value, connection=connection) value = connection.ops.value_for_db(value, field) return value
def get_prepared_db_value(connection, instance, field, raw=False): value = getattr(instance, field.attname) if raw else field.pre_save( instance, instance._state.adding) if isinstance(value, BaseExpression): from djangae.db.backends.appengine.expressions import evaluate_expression # We can't actually support F expressions on the datastore, but we can simulate # them, evaluating the expression in place. #TODO: For saves and updates we should raise a Warning. When evaluated in a filter # we should raise an Error value = evaluate_expression(value, instance, connection) if hasattr(value, "prepare_database_save"): value = value.prepare_database_save(field) else: value = field.get_db_prep_save(value, connection=connection) value = connection.ops.value_for_db(value, field) return value