<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_mixin(self):
 """ This will create the custom Model Mixin to attach to your custom field enabled model. :return: """


        _builder = self

        class CustomModelMixin(object):
            @cached_property
            def _content_type(self):
                return ContentType.objects.get_for_model(self)

            @classmethod
            def get_model_custom_fields(cls):
                """ Return a list of custom fields for this model, callable at model level """
                return _builder.fields_model_class.objects.filter(content_type=ContentType.objects.get_for_model(cls))

            def get_custom_fields(self):
                """ Return a list of custom fields for this model """
                return _builder.fields_model_class.objects.filter(content_type=self._content_type)

            def get_custom_value(self, field):
                """ Get a value for a specified custom field """
                return _builder.values_model_class.objects.get(custom_field=field,
                                                               content_type=self._content_type,
                                                               object_id=self.pk)

            def set_custom_value(self, field, value):
                """ Set a value for a specified custom field """
                custom_value, created = \
                    _builder.values_model_class.objects.get_or_create(custom_field=field,
                                                                      content_type=self._content_type,
                                                                      object_id=self.pk)
                custom_value.value = value
                custom_value.full_clean()
                custom_value.save()
                return custom_value

            #def __getattr__(self, name):
            #    """ Get a value for a specified custom field """
            #    try:
            #        obj = _builder.values_model_class.objects.get(custom_field__name=name,
            #                                                      content_type=self._content_type,
            #                                                      object_id=self.pk)
            #        return obj.value
            #    except ObjectDoesNotExist:
            #        pass
            #    return super(CustomModelMixin, self).__getattr__(name)

        return CustomModelMixin