def is_model_field_changed(instance, field_name: str) -> bool:
    """
    Compares model instance field value to value stored in DB.
    If object has not been stored in DB (yet) field is considered unchanged.
    :param instance: Model instance
    :param field_name: Model attribute name
    :return: True if field value has been changed compared to value stored in DB.
    """
    assert hasattr(instance, field_name)
    if not hasattr(instance, "pk") or instance.pk is None:
        return False
    qs = instance.__class__.objects.all()
    params = {"pk": instance.pk, field_name: getattr(instance, field_name)}
    return not qs.filter(**params).exists()