Django models for Bookshelf
Table of contents
Installation
NPM
npm install bookshelf-django --save
Yarn
yarn add bookshelf-django
Usage
Load models to registry
require('bookshelf-django')(bookshelf);
var AuthUser = bookshelf.model('Django.Auth.User');
or load model/collection
var AuthUser = require('bookshelf-django')(bookshelf).Auth.User;
Available models / collections
Django.Session
Django session framework model
Django.Sessions
Django session framework collection
Django.Site
Django site model
Django.Sites
Django site collection
Django.FlatPage
Django flat page model
toString() -> string
Returns string representation of a permission.
const FlatPage = bookshelf.model('Django.FlatPage')
FlatPage.forge({id: 1})
.fetch()
.then(function(flat_page) {
console.log(flat_page.toString())
})
Django.FlatPages
Django flat pages collection
Django.Redirect
Django redirect model
toString() -> string
Returns string representation of a redirect.
const Redirect = bookshelf.model('Django.Redirect')
Redirect.forge({id: 1})
.fetch()
.then(function(redirect) {
console.log(redirect.toString())
})
Django.Redirects
Django redirects collection
Django.ContentType
Django content type model
Django.ContentTypes
Django content type collection
Django.Auth.Permission
Permission model
toString() -> string
Returns string representation of a permission.
const AuthPermission = bookshelf.model('Django.Auth.Permission')
AuthPermission.forge({id: 1})
.fetch({withRelated: 'contentType'})
.then(function(permission) {
console.log(permission.toString())
})
toStringAsync() -> Promise<string>
Returns Promise
with string representation of a permission.
const AuthPermissions = bookshelf.collection('Django.Auth.Permissions')
AuthPermission.forge({id: 1})
.fetch({withRelated: 'contentType'})
.then(function(permission) {
return permission.toStringAsync()
}).then(function(permission) {
console.log(permission)
})
stringify(permissionModel) -> string
Parameters
-
permissionModel
Django.Auth.Permission
Django.Auth.Permission
object
Stringify a Django.Auth.Permission
object.
const AuthPermission = bookshelf.model('Django.Auth.Permission')
AuthPermission.forge({id: 1})
.fetch()
.then(AuthPermission.stringify)
.then(function(permission) {
console.log(permission)
})
Django.Auth.Permissions
Permission collection
Django.Auth.Group
Groups of permissions model
getPermissions() -> Promise<Django.Auth.Permissions>
Collection of permissions of group permissions.
const AuthPermission = bookshelf.model('Django.Auth.Permission')
const AuthGroup = bookshelf.model('Django.Auth.Group')
AuthGroup.forge()
.fetch({withRelated: ['permissions', 'permissions.contentType']})
.then(function(permissions) {
return permissions.getPermissions()
}).then(function(permissions) {
console.log(permissions.map(AuthPermission.stringify))
})
Django.Auth.Groups
Groups of permissions collection
getPermissions() -> Promise<Django.Auth.Permissions>
Collection of unique permissions of group permissions.
const AuthPermission = bookshelf.model('Django.Auth.Permission')
const AuthGroups = bookshelf.collection('Django.Auth.Groups')
AuthGroups.all()
.fetch({withRelated: ['permissions', 'permissions.contentType']})
.then(function(permissions) {
return permissions.getPermissions()
}).then(function(permissions) {
console.log(permissions.map(AuthPermission.stringify))
})
Django.Auth.User
Django user collection
getPermissions() -> Promise<Django.Auth.Permissions>
Collection of unique permissions of group permissions and permissions.
const AuthPermission = bookshelf.model('Django.Auth.Permission')
const AuthUser = bookshelf.model('Django.Auth.User')
AuthUser.forge({id: 1})
.fetch()
.then(function(user) {
return user.getPermissions()
}).then(function(permissions) {
console.log(permissions.map(AuthPermission.stringify))
})
Django.Auth.Users
Django user collection
Testing your project
In beforeAll
hook runs knex migrations in order
- Django
- Your project
All migrations must have own migration table (tableName
property).
before(function() {
knex.migrate.latest({directory: 'node_modules/bookshelf-django/migrations/', tableName: 'knex_migrations_django'})
}).then(function() {
knex.migrate.latest({directory: 'src/migrations/', tableName: 'knex_migrations_my_project'})
})
In afterAll
hook runs knex migrations in reverse order
- Your project
- Django
after(function() {
knex.migrate.rollback({directory: 'src/migrations/', tableName: 'knex_migrations_my_project'})
}).then(function() {
knex.migrate.rollback({directory: 'node_modules/bookshelf-django/migrations/', tableName: 'knex_migrations_django'})
})