Exemplo n.º 1
0
class ReviewCreateSerializer(serializers.ModelSerializer):
    movie = serializers.ModelSerializer(required=False)
    user = serializers.ModelSerializer(required=False)

    # like_user = serializers.ReadOnlyField(required=False)
    class Meta:
        model = Review
        fields = ['movie', 'user', 'title', 'content']
Exemplo n.º 2
0
class MovieStarPointUpdateSerializer(serializers.ModelSerializer):
    # pointing_users = MovieStarPointSerializer(source='moviestarpoint_set', many=True, required=False)
    pointing_user = serializers.ModelSerializer(required=False)
    pointed_movie = serializers.ModelSerializer(required=False)

    # star_point = serializers.ModelSerializer()
    # print(star_point)
    class Meta:
        model = MovieStarPoint
        fields = '__all__'
Exemplo n.º 3
0
    def _map_model_field(self, model_field, direction):
        assert isinstance(model_field, models.Field)
        # to get a fully initialized serializer field we use DRF's own init logic
        try:
            field_cls, field_kwargs = serializers.ModelSerializer().build_field(
                field_name=model_field.name,
                info=get_field_info(model_field.model),
                model_class=model_field.model,
                nested_depth=0,
            )
            field = field_cls(**field_kwargs)
        except:  # noqa
            field = None

        # For some cases, the DRF init logic either breaks (custom field with internal type) or
        # the resulting field is underspecified with regards to the schema (ReadOnlyField).
        if field and not anyisinstance(field, [serializers.ReadOnlyField, serializers.ModelField]):
            return self._map_serializer_field(field, direction)
        elif isinstance(model_field, models.ForeignKey):
            return self._map_model_field(model_field.target_field, direction)
        elif hasattr(models, model_field.get_internal_type()):
            # be graceful when the model field is not explicitly mapped to a serializer
            internal_type = getattr(models, model_field.get_internal_type())
            field_cls = serializers.ModelSerializer.serializer_field_mapping[internal_type]
            return self._map_serializer_field(field_cls(), direction)
        else:
            error(
                f'could not resolve model field "{model_field}". failed to resolve through '
                f'serializer_field_mapping, get_internal_type(), or any override mechanism. '
                f'defaulting to "string"'
            )
            return build_basic_type(OpenApiTypes.STR)
Exemplo n.º 4
0
class PaginationSerializer(ParamsSerializer):
    count = s.IntegerField(label=_('总条目数'))
    # next = s.URLField(label=_('下一页地址'), allow_null=True)
    # previous = s.URLField(label=_('上一页地址'), allow_null=True)
    page = s.IntegerField(label=_('当前页数'))
    page_size = s.IntegerField(label=_('每页显示数量'))
    filter = s.DictField(label=_('查询条件'))
    results = s.ModelSerializer(many=True)
Exemplo n.º 5
0
class CommentaireSerializer(serializers.ModelSerializer):
    questionnaire = serializers.ModelSerializer()

    class Meta:
        model = Commentaire
        fields = ('id', 'auteur', 'titre', 'questionnaire')

        def get_questionnaire(self, obj):
            return QuestionnaireSerializer(obj.questionnaire).data
Exemplo n.º 6
0
class UserProfile(serializers.ModelSerializer):
    user = serializers.ModelSerializer()

    class Meta:
        model = UserProfile
        fields = (
            'user',
            'grantType',
        )

    def get_user(self):
        user = self.data.user
        return UserSerializer(user, context=self.context).data
Exemplo n.º 7
0
    def _map_model_field(self, model_field, direction):
        assert isinstance(model_field, models.Field)
        # to get a fully initialized serializer field we use DRF's own init logic
        try:
            field_cls, field_kwargs = serializers.ModelSerializer(
            ).build_field(
                field_name=model_field.name,
                info=get_field_info(model_field.model),
                model_class=model_field.model,
                nested_depth=0,
            )
            field = field_cls(**field_kwargs)
        except:  # noqa
            field = None

        # For some cases, the DRF init logic either breaks (custom field with internal type) or
        # the resulting field is underspecified with regards to the schema (ReadOnlyField).
        if field and isinstance(field, serializers.PrimaryKeyRelatedField):
            # special case handling only for _resolve_path_parameters() where neither queryset nor
            # parent is set by build_field. patch in queryset as _map_serializer_field requires it
            if not field.queryset:
                field.queryset = model_field.related_model.objects.none()
            return self._map_serializer_field(field, direction)
        elif field and not anyisinstance(
                field, [serializers.ReadOnlyField, serializers.ModelField]):
            return self._map_serializer_field(field, direction)
        elif isinstance(model_field, models.ForeignKey):
            return self._map_model_field(model_field.target_field, direction)
        elif hasattr(models, 'JSONField') and isinstance(
                model_field, models.JSONField):
            # fix for DRF==3.11 with django>=3.1 as it is not yet represented in the field_mapping
            return build_basic_type(OpenApiTypes.OBJECT)
        elif hasattr(models, model_field.get_internal_type()):
            # be graceful when the model field is not explicitly mapped to a serializer
            internal_type = getattr(models, model_field.get_internal_type())
            field_cls = serializers.ModelSerializer.serializer_field_mapping.get(
                internal_type)
            if not field_cls:
                warn(
                    f'model field "{model_field.get_internal_type()}" has no mapping in '
                    f'ModelSerializer. it may be a deprecated field. defaulting to "string"'
                )
                return build_basic_type(OpenApiTypes.STR)
            return self._map_serializer_field(field_cls(), direction)
        else:
            error(
                f'could not resolve model field "{model_field}". failed to resolve through '
                f'serializer_field_mapping, get_internal_type(), or any override mechanism. '
                f'defaulting to "string"')
            return build_basic_type(OpenApiTypes.STR)
Exemplo n.º 8
0
 def _build_concrete_fields(self):
     helper_serializer = serializers.ModelSerializer()
     for model_field in self.model_inspector.concrete_fields:
         if type(model_field) in config.FIELD_TYPES:
             field_class, field_kwargs = config.FIELD_TYPES[type(
                 model_field)]['serializer_class'], {
                     'required': not model_field.null
                 }
         else:
             field_class, field_kwargs = helper_serializer.build_standard_field(
                 model_field.name, model_field)
         kwarg_overrides = self.serializer_field_kwargs.get(
             model_field.name, {})
         field_serializer = field_class(**{
             **field_kwargs,
             **kwarg_overrides
         })
         self.concrete_fields[model_field.name] = field_serializer
         self.field_info.append(
             FieldInfo(serializer_field_name=model_field.name,
                       model_field=model_field,
                       serializer=field_serializer))
     if self.one_to_one_proxy_fields is not None:
         for one_to_one_field_name, proxy_fields in self.one_to_one_proxy_fields.items(
         ):
             for proxy_field_name in proxy_fields:
                 one_to_one_field = self.model_cls._meta.get_field(
                     one_to_one_field_name)
                 related_model_cls = one_to_one_field.related_model
                 model_proxy_field = related_model_cls._meta.get_field(
                     proxy_field_name)
                 field_class, field_kwargs = helper_serializer.build_standard_field(
                     model_proxy_field.name, model_proxy_field)
                 kwarg_overrides = self.serializer_field_kwargs.get(
                     model_proxy_field.name, {})
                 field_serializer = field_class(
                     **{
                         **field_kwargs,
                         **kwarg_overrides,
                         **{
                             'source':
                             one_to_one_field.name + '.' + model_proxy_field.name
                         }
                     })
                 self.concrete_fields[
                     model_proxy_field.name] = field_serializer
                 self.field_info.append(
                     FieldInfo(serializer_field_name=model_proxy_field.name,
                               model_field=model_proxy_field,
                               serializer=field_serializer))
Exemplo n.º 9
0
class NoteSerializer(serializers.ModelSerializer):

    serializers.ModelSerializer()
    instance = serializers.PrimaryKeyRelatedField(queryset=Instance.objects.all())

    class Meta:
        model = Note

    def save(self, user=None):
        # This used to be in note_viewset
        if user:
            if not user.has_perm('change_xform', self.validated_data['instance'].xform):
                msg = "You are not authorized to add/change notes on this form."
                raise exceptions.PermissionDenied(msg)
        return super(NoteSerializer, self).save()
Exemplo n.º 10
0
class RequestBoardCreateSerializer(serializers.ModelSerializer):
    user = serializers.ModelSerializer(required = False)
    class Meta:
        model = RequestBoard
        # fields= '__all__'
        fields = ['movie_id', 'movie_name', 'title','user']
Exemplo n.º 11
0
class FreeBoardCreateSerializer(serializers.ModelSerializer):
    user = serializers.ModelSerializer(required = False)
    class Meta:
        model = FreeBoard
        # fields= '__all__'
        fields = ['title', 'content', 'user']
Exemplo n.º 12
0
 def retrieve(self, request, pk=None):
     queryset = Facility.objects.all()
     facility = get_object_or_404(queryset, pk=pk)
     serializer = serializers.ModelSerializer(facility)
     return Response(serializer.data)
Exemplo n.º 13
0
 def list(self, request):
     queryset = Facility.objects.all()
     serializer = serializers.ModelSerializer(queryset)
     return Response(serializer.data)