def upsert_and_get(self, conflict_target: List, fields: Dict, index_predicate: str=None):
self.on_conflict(conflict_target, ConflictAction.UPDATE, index_predicate)<EOL>return self.insert_and_get(**fields)<EOL>
Creates a new record or updates the existing one
        with the specified data and then gets the row.

        Arguments:
            conflict_target:
                Fields to pass into the ON CONFLICT clause.

            fields:
                Fields to insert/update.

            index_predicate:
                The index predicate to satisfy an arbiter partial index (i.e. what partial index to use for checking
                conflicts)

        Returns:
            The model instance representing the row
            that was created/updated.