2016-09-25 15 views
1

モデルから名前フィールドのリストを出力すると思われる単純なDjangoビューを作成しました。私はUserモデルの中で名前を照会してリストに追加し、それを返す関数を作成しました。私はビュークラス内でこの関数を呼び出し、そのリストをコンテキストとして渡してテンプレート内で使うことができます。Django:model.pyの関数を使用している場合、私はview.pyで自己として渡されますか?

以下は私の現在のコードです。私は、自分がviews.pyで呼び出そうとしているときに、自分が何であると思われているのか分かりません。 Userというモデル名を渡すと、うまく動作しませんでした。ですから、views.pyには自分自身が正確に何を想定していますか?事前に感謝:D

ユーザーmodels.pyあなたのモデルに@classmethodデコレータを使用して、クラスメソッドとしてquery_choiceを定義する必要があります

def query_choice(self,query_choice): 
    users_first_name = self.objects.values_list(query_choice) 
    names = [] 
    for u in users_first_name: 
     names.append(u) 
    return names 

views.py

def login(request): 
    users_first_name = User.query_name(*self*,'first_name') 
    template = loader.get_template('registration/home.html') 
    context = { 
     'output': users_first_name, 
    } 
    #return HttpResponse(output) 
    return HttpResponse(template.render(context,request)) 
+0

注:その後、values_listするフラット= trueの場合、パラメータを渡すことができます機能が1行長くなる – Sayse

答えて

1

@classmethod 
def query_choice(cls, query_choice): 
    return cls.objects.values_list(query_choice, flat=True) 

次に、次のように呼び出すことができます:

names = User.query_choice("first_name") 

彼らところで、あなたはそれをレンダリングし、自分自身のローディングテンプレートの混乱を保存するためにrenderを使用することができますなど:

from django.shortcuts import render 

def login(request): 
    names = User.query_choice("first_name") 
    return render(request, "registration/home.html", {"output": names}) 
+0

ok、チップのおかげで。私は今からそれを使用します –

関連する問題