Serialization
Guide to overriding the `serialize()` method in the `Model` class to customize serialization.
The Model
class includes a serialize()
method that converts model instances into dictionaries.
The serialize()
method is called when you pass a model instance to the Response
object inside a view.
By default, serialize()
includes all fields of the model or only the fields specified in serializable_fields
. However, you might need to customize serialization to include additional information or change the format.
Quick Example
Here's a quick example of how you can override the serialize()
method in a model class to customize serialization:
from blazingapi.orm.models import Model
from blazingapi.orm.fields import VarCharField, TextField
class Article(Model):
serializable_fields = ['title', 'content']
title = VarCharField(max_length=256)
content = TextField()
sensitive_data = VarCharField(max_length=256)
def serialize(self):
# Default serialization of specified fields
serialized_data = super().serialize()
# Add custom fields or transform existing ones
serialized_data['summary'] = f"{self.content[:10]}..."
return serialized_data
article = Article(title='Hello', content='This is a long article...', sensitive_data='Secret')
print(article.serialize())
The output of article.serialize()
will be a dict
object with the following structure:
{
"title": "Hello",
"content": "This is a long article...",
"summary": "This is a ..."
}
In this example, the sensitive_data
field is not included in the serializable_fields
list, so it won't be serialized by super().serialize()
.
Also, the serialize()
method is overridden to include a custom summary
field that contains the first 10 characters of the content
field.