SQLAlchemy specific things for django-rest-framework
Project description
Django REST Witchcraft
SQLAlchemy specific things for django-rest-framework
Installation
pip install django-rest-witchcraft
Example
First up, lets define some simple models:
engine = create_engine('sqlite:///:memory:', echo=True)
session = scoped_session(sessionmaker(bind=engine))
Base = declarative_base()
Base.query = session.query_property()
Base.metadata.create_all(engine)
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer(), primary_key=True)
name = Column(String())
class User(Base):
__tablename__ = 'users'
id = Column(Integer(), primary_key=True)
name = Column(String())
fullname = Column(String())
password = Column(String())
_group_id = Column('group_id', Integer(), ForeignKey('groups.id'))
group = relationship(Group, backref='users')
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer(), primary_key=True)
email_addresss = Column(String(), nullable=False)
_user_id = Column(Integer(), ForeignKey('users.id'))
user = relationship(User, backref='addresses')
Nothing fancy here, we have a User class that can belong to a Group instance and has many Address instances
Second, lets define a serializer for User with all the fields:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
session = session
fields = '__all__'
This will create the following serializer for us:
>>> serializer = UserSerializer() >>> serializer UserSerializer(): id = IntegerField(allow_null=False, help_text=None, label='Id', required=True) name = CharField(allow_null=True, help_text=None, label='Name', max_length=None, required=False) fullname = CharField(allow_null=True, help_text=None, label='Fullname', max_length=None, required=False) password = CharField(allow_null=True, help_text=None, label='Password', max_length=None, required=False) group = GroupSerializer(is_nested=True, required=False): name = CharField(allow_null=True, help_text=None, label='Name', max_length=None, required=False) id = IntegerField(allow_null=False, help_text=None, label='Id', required=False) addresses = AddressSerializer(many=True, required=False): id = IntegerField(allow_null=False, help_text=None, label='Id', required=False) email_addresss = CharField(allow_null=False, help_text=None, label='Email_addresss', max_length=None, required=True) url = UriField(read_only=True)
This serializer can handle nested create, update or partial update operations.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for django-rest-witchcraft-0.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 296f017732fa87bef4da1c2fb2f6afc844f5e463f7449790b1c2f7de120e36a3 |
|
MD5 | 4329ac4c679c3dcd3d7baf85a510437d |
|
BLAKE2b-256 | a19a06e1b7a671358a885600da2e0332bc97ee433c70c3d1359f571cf9920f92 |
Close
Hashes for django_rest_witchcraft-0.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68d3c7b011bc86b5c1836275a607ecdc43c09479bc8527e9ba954c4b20b6fcc5 |
|
MD5 | 757eb246d4349a4d1839fdff23d9c23b |
|
BLAKE2b-256 | 0fc53bc4e877a3dce574cde3e4628b46ca360b3592d4024d7197fc32e2ffabf4 |