function fk(...args) {
    return new ForeignKey(...args);
}
Defines a foreign key on a model, which points
to a single entity on another model.

You can pass arguments as either a single object,
or two arguments.

If you pass two arguments, the first one is the name
of the Model the foreign key is pointing to, and
the second one is an optional related name, which will
be used to access the Model the foreign key
is being defined from, from the target Model.

If the related name is not passed, it will be set as
`${toModelName}Set`.

If you pass an object to `fk`, it has to be in the form

```javascript
fields = {
  author: fk({ to: 'Author', relatedName: 'books' })
}
```

Which is equal to

```javascript
fields = {
  author: fk('Author', 'books'),
}
```

@param {string|Class<Model>|Object} options - The target Model class, its `modelName`
                                              attribute or an options object that
                                              contains either as the `to` key.
@param {string|Class<Model>} options.to - The target Model class or its `modelName` attribute.
@param {string} [options.as] - Name for the new accessor defined for this field. If you don't
                               supply this, the key that this field is defined under will be
                               overridden.
@param {string} [options.relatedName] - The property name that will be used to access
                                        a QuerySet for all source models that reference
                                        the respective target Model's instance.
@param {string} [relatedName] - If you didn't pass an object as the first argument,
                                this is the property name that will be used to
                                access a QuerySet for all source models that reference
                                the respective target Model's instance.
@return {ForeignKey}