2011-01-12 10 views
2

ねえ、私はすべてのオブジェクトの1つの属性を1つのクエリーセット内で処理したいのですが、その後はJSON形式を返すのですか?そのやり方は?Djangoクエリーセットを処理するには?

たとえば、ユーザー名フィールドの後ろに「*」を手動で追加してから、JSON形式で戻したいとしますか?またはquerysetタイプのままにしますか?

答えて

1

クエリセットをループすることができ、各要素は、単一のオブジェクトなので、何かのように:

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

Djangoのシェルでそれで遊びます。

JSON形式ですか?ああ、誰かがそれをすることができます!

+1

'json.dumps(starnames)は'それを行います。 –

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 

用途:JSONレスポンスについて

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

Django Docs

関連する問題