【问题标题】:Cannot exclude pk and model from serializer in django 1.8无法从 django 1.8 中的序列化程序中排除 pk 和模型
【发布时间】:2015-06-20 21:33:53
【问题描述】:

作为 Django 序列化的一部分,我正在尝试从输出 json 对象中删除 pkmodel。我在views.py中尝试了下面的代码,但是它抛出了下面的错误

TypeError: serialize() takes 2 positional arguments but 3 were given.

为了解决这个问题,我也使用了@staticmethod,但没有多大用处。

这里是 views.py

def get_stats(request):
    if request.method == "POST":
        srch_dropV = request.POST['srch_dropAJ']
    else:
        srch_dropV = ''
    if(srch_dropV == 'Lock'):
        stud = LockBased.objects.all()
    response_data = {}
    response_data['result'] = 'Success'
    serializer = NewSerializer()
    response_data['message'] = serializer.serialize('json', stud)
    return HttpResponse(JsonResponse(response_data), content_type="application/json")


from django.core.serializers.json import Serializer, DjangoJSONEncoder
import json

class NewSerializer(Serializer):
    def end_serialization(self):
        cleaned_objects = []

        for obj in self.objects:
            del obj['pk']
            del obj['model'] 
            cleaned_objects.append(obj)

        json.dump(cleaned_objects, self.stream, cls=DjangoJSONEncoder, **self.options)

请帮我找出问题并解决它。
我正在使用 Django 1.8 和 Python 3.4。

【问题讨论】:

    标签: python django python-3.x django-views


    【解决方案1】:

    我认为您将 serializers.serialize()serializer.serialize() 混淆了:

    serializer = NewSerializer()
    response_data['message'] = serializer.serialize('json', stud)
    

    与模块级函数相比,序列化器的方法不带目标格式参数,而只带一个查询集:

    response_data['message'] = serializer.serialize(stud)
    

    【讨论】:

    • 嗨,我尝试只使用查询集 - 然后它抛出一个属性错误,说 'NewSerializer' 对象没有属性 'objects' - 当 for 循环正在执行时
    • 您从哪个Serializer 类继承? objects 仅在 django.core.serializers.python.Serializer 中定义,而不是 ``django.core.serializers.Serializer'。
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2016-11-16
    • 2021-11-08
    相关资源
    最近更新 更多