質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2129閲覧

django Userオブジェクトをfilterしてtemplateに渡したい

tonytony

総合スコア11

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/08 22:25

編集2020/06/08 23:58

Djangoでマッチングアプリを作成しております。

やりたいこととしては、Userモデルから全てのユーザー情報を取得し、自分以外・異性の条件でfilterで引っ張ってきて、それを一覧でtemplateに載せたいんですが、ハマってしまいました。
デバッグツールを回したところ、数値の取得はできていると思います。

users変数に格納されているデータ型が悪いのでしょうか?
view内でやっていることは、Userオブジェクトを全てリストにしてusersに代入し、それをfilterにかけたあと、match_usersにlist型にして格納。その後それをcontextに渡している。という感じです。
知見のある方、お力貸していただけると幸いです。

viws.py

1class HomeView(LoginRequiredMixin, View): 2 3 def get(self, request, *args, **kwargs): 4 # 自分以外、異性、すでにいいね悪いねしてない人の三つで絞る 5 def example(user): 6 if user.id != request.user.id and user.profile.gender != request.user.profile.gender:#すでにいいねしている人を省く 7 return True 8 else: 9 return False 10 users = list(User.objects.all()) 11 match_users = list(filter(example, users)) 12 context = { 13 'match_users': match_users 14 } 15 16 return render(request, 'home.html', context)

home.html

1<!doctype html> 2{% extends "base.html" %} 3 4{% block content %} 5 6 <title>pairnite(仮称)</title> 7 </head> 8 <body> 9 <h1>ここはログイン後の一覧ページです。</h1> 10 <div> 11 <h3>{{ request.user.profile.user_name }}</h3> 12 <a class="btn btn-primary" href="{% url 'users:detail' request.user.pk %}" role="button">自分の詳細ページ</a> 13 </div> 14 {% for request.user in request.user %} 15 { request.user.profile.user_name } 16 {% endfor %} 17 {% for match_user in match_users_lists %} 18 { match_user.profile.user_name } 19 {% endfor %} 20 21 {% endblock %}

イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tonytony

2020/06/08 23:55

失礼いたしました。編集いたしました。
guest

回答2

0

ベストアンサー

hasami様の言う通りUserオブジェクトはfor文で回せませんが、あと

HTML

1{ request.user.profile.user_name } 23{{ request.user.profile.user_name }} 4 5{ match_user.profile.user_name } 67{{ match_user.profile.user_name }} 8```ですよね。

投稿2020/06/09 07:20

ForestSeo

総合スコア2720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hasami

2020/06/09 23:25

気づいていませんでした。ありがとうございます。 私の投稿した回答を修正させていただきました。
guest

0

下記でエラーが発生していると思います。
下記をすべて削除するか、forテンプレートタグを削除したらどうでしょうか?

html

1{% for request.user in request.user %} 2 {{ request.user.profile.user_name }} 3{% endfor %}

投稿2020/06/09 04:13

編集2020/06/09 23:26
hasami

総合スコア1277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問