code: def _add_condition(self, operator, operand, types):
          
  
          if not self.current_field:
              raise QueryMissingField("Conditions requires a field()")
  
          elif not type(operand) in types:
              caller = inspect.currentframe().f_back.f_code.co_name
              raise QueryTypeError("Invalid type passed to %s() , expected: %s" % (caller, types))
  
          elif self.c_oper:
              raise QueryMultipleExpressions("Expected logical operator after expression")
  
          self.c_oper = inspect.currentframe().f_back.f_code.co_name
  
          self._query.append("%(current_field)s%(operator)s%(operand)s" % {
                                 'current_field': self.current_field,
                                 'operator': operator,
                                 'operand': operand
          })
  
          return self
docs: Appends condition to self._query after performing validation
  
          :param operator: operator (str)
          :param operand: operand
          :param types: allowed types
          :raise:
              - QueryMissingField: if a field hasn't been set
              - QueryMultipleExpressions: if a condition already has been set
              - QueryTypeError: if the value is of an unexpected type