'Creates a new row using the values from a template instance.
The new instance will not exist in the database or have a valid
id attribute until its save() method is called.'

@classmethod
def clone(cls, template):

    assert isinstance(template, cls)
    new_row = [getattr(template, field) for field in cls._fields]
    clone = cls(row=new_row, new_record=True)
    clone.id = None
    return clone
