2016-12-30 5 views
0

Djangoを初めて使用しているため、ログインしたユーザーがテーブルに提供されているデータを見ることができるサイトを作成しています。このテーブルにはフィールドユーザー名があります。Django 1.10ログインユーザーのユーザー名を使用してテーブルを照会してください

ユーザーがリストビューに自分のデータを表示してもらいたいと思っています。ユーザーのユーザー名を使用して、どのようにクエリを実行できるのか分かりません。あなたは私がやっているかのアイデアを与えるために、これは私がコードとして持っているものである:(Iは、複数の他の方法を試してみましたが、私は、ユーザーのログイン名の文字列を取得することはできません

from django.contrib.auth.models import User   
from django.views.generic import ListView  

username = User.username 

class RoosterListView(LoginRequiredMixin, ListView): 
    queryset = Roosters.objects.filter(startvc__range=(DatumStart, DatumEind),username=CurrentUser).order_by("startvc")[:35] 

本当にありがとうございました。事前に。

+0

普通のアプローチは、 'Roosters'ではなく' Rooster'をモデルに指定し、ユーザー名を持つ文字列の代わりに 'User'モデルに外部キーを使用することです。 – Alasdair

+0

私は理解します。私は雄鶏を雄鶏に変えます。しかし、テーブルRoostersからのデータは別のアプリケーションから来ています。 –

答えて

0

あなたは単にあなたがしたいものは何でも、クエリ現在のセッションのすべての情報を取得して行うために周りのあなたのリクエストパラメータを渡すことができ

username = request.user 

してログインしているユーザーのユーザー名を取得することができます。

+0

ありがとうAlasdair!今はうまくいく。 –

1

username = User.username行を削除 - Userは、現在のユーザーインスタンスではなくモデルクラスです。

querysetを設定すると、現在のユーザーにアクセスできます。これは、モジュールがインポートされたときにロードされます。要求が行われたときではありません。 get_querysetメソッドを無効にすると、self.request.userでユーザーにアクセスできます。

class RoosterListView(LoginRequiredMixin, ListView): 
    def get_queryset(self): 
     return Roosters.objects.filter(startvc__range=(DatumStart, DatumEind), username=self.request.user.username).order_by("startvc")[:35] 
関連する問題