code: def save( self ):
          schema = self.schema()
          if ( not schema ):
              self.saved.emit()
              return
          record = self.record()
          if not record:
              record = self._model()
          save_data    = []
          column_edits = self.findChildren(XOrbColumnEdit)
          for widget in column_edits:
              columnName  = widget.columnName()
              column      = schema.column(columnName)
              if ( not column ):
                  logger.warning('%s is not a valid column of %s.' % \
                                 (columnName, schema.name()))
                  continue
              value = widget.value()
              if ( value == IGNORED ):
                  continue
              if ( column.required() and not value ):
                  name = column.displayName()
                  QMessageBox.information(self, 
                                          'Missing Required Field',
                                          '%s is a required field.' % name)
                  return
              elif ( column.unique() ):
                  query        = Q(column.name()) == value
                  if ( record.isRecord() ):
                      query   &= Q(self._model) != record
                  columns  = self._model.schema().primaryColumns()
                  result   = self._model.select(columns = columns, where = query)
                  if ( result.total() ):
                      QMessageBox.information(self,
                                              'Duplicate Entry',
                                              '%s already exists.' % value)
                      return
              save_data.append((column, value))
          for column, value in save_data:
              record.setRecordValue(column.name(), value)
          self._record = record
          self.saved.emit()