小编pet*_*yum的帖子

如何将json数据发布/放入ListSerializer

我正在阅读这里有关自定义多个更新的内容,我还没想到在什么情况下ListSerializer调用自定义更新方法.我想一次更新多个对象,我现在不担心多次创建或删除.

从文档中的示例:

# serializers.py
class BookListSerializer(serializers.ListSerializer):
    def update(self, instance, validated_data):
        # custom update logic
        ...

class BookSerializer(serializers.Serializer):
    ...
    class Meta:
        list_serializer_class = BookListSerializer
Run Code Online (Sandbox Code Playgroud)

和我的ViewSet

# api.py
class BookViewSet(ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
Run Code Online (Sandbox Code Playgroud)

我的网址设置使用 DefaultRouter

# urls.py
router = routers.DefaultRouter()
router.register(r'Book', BookViewSet)

urlpatterns = patterns('',                       
    url(r'^api/', include(router.urls)),
    ...
Run Code Online (Sandbox Code Playgroud)

所以我使用了这个设置,DefaultRouter以便/api/Book/使用BookSerializer.

一般的想法是,如果我POST/PUT/PATCH一个JSON对象数组,/api/Book/那么序列化器应切换到BookListSerializer

我已经尝试过POST/PUT/PATCH JSON数据列表/api/Book/,如下所示:

[ {id:1,title:thing1}, {id:2, title:thing2} ]
Run Code Online (Sandbox Code Playgroud)

但它似乎仍然使用BookSerializer而不是处理数据BookListSerializer.如果我通过POST提交,我会得到Invalid …

python django django-rest-framework

23
推荐指数
1
解决办法
1万
查看次数

除了一个之外,我可以在所有压缩块上使用过滤器吗?

在我的压缩器设置中,我在大多数javascript中使用SlimIt:

COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.SlimItFilter', ]

我的一些js文件不应该通过SlimIt,因为文件已经缩小,或者当javascript与其他文件缩小时会抛出一些错误.我的模板块最终看起来像这样:

{# code that I minify #}
{% block compressed_libs %}
    {% compress js %}
        <script src="/static/js/compress_this.js"></script>
        <script src="/static/js/also_compress_this.js"></script>
        ...
    {% endcompress %}
{% endblock %}

{# code that shouldn't minify #}
{% block non-compressible_libs %}
    <script src="/static/js/already.min.js"></script>
    <script src="/static/js/breaks-everything.js"></script>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我可以为不同的块/文件设置不同的压缩过滤器规则,以便在跳过SlimIt时我的"不可压缩"文件仍然可以通过压缩器连接在一起吗?

django-compressor

8
推荐指数
1
解决办法
214
查看次数