Python 如何处理django查询集?

Python 如何处理django查询集?,python,django,django-models,Python,Django,Django Models,嘿,我想处理一个queryset中每个对象的一个属性,然后我想返回JSON格式?怎么办 results = Sample.objects.filter(user=user) 例如,我想在用户名字段后手动添加一个“*”,然后以JSON格式返回?或者保留查询集类型?您可以循环查询集,并且每个元素都是单个对象,因此类似于: starnames = [ n.username+"*" for n in results] 在Django shell玩它 JSON格式?哦,其他人也能做到 class Pr

嘿,我想处理一个queryset中每个对象的一个属性,然后我想返回JSON格式?怎么办

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

例如,我想在用户名字段后手动添加一个“*”,然后以JSON格式返回?或者保留查询集类型?

您可以循环查询集,并且每个元素都是单个对象,因此类似于:

starnames = [ n.username+"*" for n in results]
在Django shell玩它

JSON格式?哦,其他人也能做到

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响应:

JSON.dumps(starnames)
就可以了。