Как обработать набор запросов Django? - PullRequest
2 голосов
/ 12 января 2011

Эй, я хочу обработать один атрибут каждого объекта в одном наборе запросов, и после этого я хочу вернуть формат JSON?Как это сделать?

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

Например, я хочу вручную добавить '*' после поля имени пользователя, а затем вернуться в формате JSON?или оставить тип набора запросов?

Ответы [ 2 ]

1 голос
/ 09 января 2014
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

1 голос
/ 12 января 2011

Вы можете циклически проходить по набору запросов, и каждый элемент является отдельным объектом, поэтому что-то вроде:

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

играть с ним в оболочке Django.

формат JSON? о, кто-то еще может сделать это!

...