Django Rest Framework 序列化器作为表单和嵌套关系

Posted

技术标签:

【中文标题】Django Rest Framework 序列化器作为表单和嵌套关系【英文标题】:Django Rest Framework serializers as forms and nested relationships 【发布时间】:2017-05-24 07:20:48 【问题描述】:

我正在尝试使用 django rest 框架来生成用于模型创建的 html 表单。假设我有一个序列化程序,它属于具有ManyToMany 关系的模型。

class SerializerExample(serializers.ModelSerializer):
    mtm = ManyToManySerializer(many=True)

然后,我在 django 休息视图中,

class AddModelView(StandardView):
    serializer_class = ModelSerializer
    renderer_classes = [TemplateHTMLRenderer]

    template_name = 'details.html'

    def get(self, request):
        model = Model.objects.get.all()
        serializer = ModelSerializer(model)
        return Response('serializer': serializer, 'model': model)

然后假设 details.html 看起来像:

% load rest_framework %

<html><body>

    <form method="POST">
        % csrf_token %
        % render_form serializer %
        <input type="submit" value="Save">
    </form>

    </body></html>

Lists are not currently supported in HTML input. 而不是多选或添加新实例的能力。我做错了什么?

【问题讨论】:

【参考方案1】:

你没有错过任何东西。这是正在进行的工作。 如果需要 HTML 表单,请使用带有嵌套序列化程序的 JSON,或者不要使用嵌套序列化程序。

【讨论】:

是否有为按照 w3c 标准在 json 中创建表单的序列化程序创建 json 表单? 我过去曾使用选项从 json 部分中获取自动表单。见django-rest-framework.org/api-guide/metadata 我实际上是自己写的。非常适合我的反应前端。很快就会在github上发布。 有意思,告诉我们吧。

以上是关于Django Rest Framework 序列化器作为表单和嵌套关系的主要内容,如果未能解决你的问题,请参考以下文章

python django-rest-framework 3.3.3 更新嵌套序列化程序

django-rest-framework、多表模型继承、ModelSerializers 和嵌套序列化器

Django.rest_framework:如何序列化一对多?

Django 序列化器与 rest_framework 序列化器

Django-Rest-Framework 中的序列化程序问题

django.core 序列化器和 Django Rest Framework 序列化器之间的区别