mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-15 18:53:18 +00:00
Moved page model specific check into PageSerializer
This commit is contained in:
parent
c2706ac6d4
commit
6d92ca4f3a
1 changed files with 15 additions and 18 deletions
|
|
@ -11,7 +11,6 @@ from rest_framework.fields import Field
|
|||
from rest_framework.relations import RelatedField
|
||||
|
||||
from wagtail.utils.compat import get_related_model
|
||||
from wagtail.wagtailcore.models import Page
|
||||
from wagtail.wagtailcore import fields as wagtailcore_fields
|
||||
|
||||
from .utils import ObjectDetailURL, URLPath, pages_for_site
|
||||
|
|
@ -71,23 +70,6 @@ class BaseSerializer(serializers.ModelSerializer):
|
|||
|
||||
return super(BaseSerializer, self).build_property_field(field_name, model_class)
|
||||
|
||||
def build_relational_field(self, field_name, relation_info):
|
||||
if relation_info.to_many:
|
||||
# Find child relations (pages only)
|
||||
model = getattr(self.Meta, 'model')
|
||||
child_relations = {}
|
||||
if issubclass(model, Page):
|
||||
child_relations = {
|
||||
child_relation.field.rel.related_name: get_related_model(child_relation)
|
||||
for child_relation in get_all_child_relations(model)
|
||||
}
|
||||
|
||||
# Check child relations
|
||||
if field_name in child_relations and hasattr(child_relations[field_name], 'api_fields'):
|
||||
return ChildRelationField, {'child_fields': child_relations[field_name].api_fields}
|
||||
|
||||
return super(BaseSerializer, self).build_relational_field(field_name, relation_info)
|
||||
|
||||
def serialize_meta(self, obj):
|
||||
"""
|
||||
This returns a JSON-serialisable dict to use for the "meta"
|
||||
|
|
@ -157,6 +139,21 @@ class PageSerializer(BaseSerializer):
|
|||
|
||||
return OrderedDict(data)
|
||||
|
||||
def build_relational_field(self, field_name, relation_info):
|
||||
if relation_info.to_many:
|
||||
# Find child relations
|
||||
model = getattr(self.Meta, 'model')
|
||||
child_relations = {
|
||||
child_relation.field.rel.related_name: get_related_model(child_relation)
|
||||
for child_relation in get_all_child_relations(model)
|
||||
}
|
||||
|
||||
# Check child relations
|
||||
if field_name in child_relations and hasattr(child_relations[field_name], 'api_fields'):
|
||||
return ChildRelationField, {'child_fields': child_relations[field_name].api_fields}
|
||||
|
||||
return super(BaseSerializer, self).build_relational_field(field_name, relation_info)
|
||||
|
||||
|
||||
class DocumentSerializer(BaseSerializer):
|
||||
def serialize_meta(self, document):
|
||||
|
|
|
|||
Loading…
Reference in a new issue