async def METHOD_NAME(
    cls,
    table_class: t.Type[TableInstance],
    defaults: t.Dict[t.Union[Column, str], t.Any] = None,
    minimal: bool = False,
    persist: bool = True,
) -> TableInstance:
    model = table_class(_ignore_missing=True)
    defaults = {} if not defaults else defaults
    for column, value in defaults.items():
        if isinstance(column, str):
            column = model._meta.get_column_by_name(column)
        setattr(model, column._meta.name, value)
    for column in model._meta.columns:
        if column._meta.null and minimal:
            continue
        if column._meta.name in defaults:
            continue  # Column value exists
        if isinstance(column, ForeignKey) and persist:
            reference_model = await cls.METHOD_NAME(
                column._foreign_key_meta.resolved_references,
                persist=True,
            )
            random_value = getattr(
                reference_model,
                reference_model._meta.primary_key._meta.name,
            )
        else:
            random_value = cls._randomize_attribute(column)
        setattr(model, column._meta.name, random_value)
    if persist:
        await model.save().run()
    return model