如何处理django查询集?

时间:2011-01-12 12:56:27

标签: python django django-models

嘿,我想在一个查询集中处理每个对象的一个​​属性,之后我想返回JSON格式?该怎么办?

results = Sample.objects.filter(user=user)

例如,我想在用户名字段之后手动添加'*',然后以JSON格式返回?或保持查询集类型?

2 个答案:

答案 0 :(得分:1)

您可以遍历查询集,每个元素都是一个对象,如下所示:

starnames = [ n.username+"*" for n in results]

在Django shell玩它。

JSON格式?哦别人可以做到!

答案 1 :(得分:1)

class ProcessQuerySet(object):
"""
A control that allow to add extra attributes for each object inside queryset.
"""
def process_queryset(self, queryset):
    """ queryset is a QuerySet or iterable object. """
    return map(self.extra, queryset) # Using map instead list you can save memory.

def extra(self, obj):
    """ Hook method to add extra attributes to each object inside queryset. """
    current_user = self.request.user # You can use `self` to access current view object
    obj.username += '*'
    return obj

用法:

class YourView(ProcessQuerySet, AnyDjangoGenericView):
def get_queryset(self):
    queryset = SomeModel.objects.all()
    return self.process_queryset(queryset)

关于JSON响应:Django Docs