Models — Django Kaos Utils documentation

# Models

- Fields

- QuerySets

- Mixins

- Admin

## Fields

class dj_kaos_utils.models.TwoPlacesDecimalField(*args, **kwargs)

  Bases: `DecimalField`

  A DecimalField with 2 decimal places

class dj_kaos_utils.models.MoneyField(*args, **kwargs)

  Bases: `TwoPlacesDecimalField`

  Model field representing an amount of money

class dj_kaos_utils.models.CaseInsensitiveFieldMixin

  Bases: `RegisterLookupMixin`

  Field mixin that uses case-insensitive lookup alternatives if they exist.

  Example:

        >>> class LowerCaseLookupCharField(CaseInsensitiveFieldMixin, models.CharField):
        >>>     pass

class dj_kaos_utils.models.ToLowerCaseFieldMixin(verbose_name=None, name=None, primary_key=False, max_length=None, unique=False, blank=False, null=False, db_index=False, rel=None, default=<class 'django.db.models.fields.NOT_PROVIDED'>, editable=True, serialize=True, unique_for_date=None, unique_for_month=None, unique_for_year=None, choices=None, help_text='', db_column=None, db_tablespace=None, auto_created=False, validators=(), error_messages=None)

  Bases: `Field`

  Always save the field as lowercase

class dj_kaos_utils.models.LowerCaseCharField(*args, db_collation=None, **kwargs)

  Bases: `CaseInsensitiveFieldMixin`, `ToLowerCaseFieldMixin`, `CharField`

  CharField that saves the values passed to it as lowercase.

## QuerySets

Refer to QuerySets

## Mixins

class dj_kaos_utils.models.HasAutoFields

  Bases: `object`

  Mixin for models that have fields that can be automatically set, for example from the value of other fields.

  set_auto_fields()

    Override this method to set the fields that need to be automatically set

class dj_kaos_utils.models.HasInitials

  Bases: `object`

  Add property initials to its inheritor classes. Take the value form the field defined by take_initials_from and return the initial letters of each word in it, capitalized. Interface using instance.initials.

  property initials

    Take the value form the field defined by take_initials_from and return the initial letters of each word in it, capitalized. Example: John Smith => JS :return: Initial letters of each word in the value from the field take_initials_from, capitalized.

class dj_kaos_utils.models.HasWarnings

  Bases: `object`

  Adds a method get_warnings useful to catch issues that aren’t worthy of throwing a ValidationError

  Example:

        >>> class MyModel(models.Model):
        >>>     def get_warnings(self):
        >>>         warnings = super().get_warnings()
        >>>         if self.fulfills_condition():
        >>>             return [*warnings, "New warning"]
        >>>         return warnings

  get_warnings() → list[str | tuple[str, str]]

    Override this method and append any warnings to the result of calling super()

    Returns

      A list of warnings. Each item in the list is either a tuple of (field_name, warning description) or just warning description.

## Admin

class dj_kaos_utils.models.admin.HasWarningsAdmin

  Bases: `BaseModelAdmin`

  A Django ModelAdmin class to display warnings associated with an object of HasWarnings class.