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

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

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

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

Python

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

Q&A

0回答

851閲覧

Django クエリセットの算出方法

Mario_11

総合スコア95

Django

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

Python

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

0グッド

0クリップ

投稿2021/04/15 04:49

編集2021/04/15 06:32

Django クエリセットの算出方法を教えていただきたいです。
記事毎にいいねをしたユーザーを表示させたいのですが、
fillter()を使ってどう抽出すればいいのかわかりません。

下記のコードですとobjects.all()を使用しているので、記事関係なく、いいねをした人が全て抽出されます。

python

1-Views.py- 2class LikeList(View): 3 """いいねした人リスト""" 4 def get(self, request,*args, **kwargs): 5 context = {} 6 context['all_like_list'] = Like.objects.all() 7 return render(request, 'app/like_user_list.html', context) 8 9↓修正後 10class LikeList(View): 11 """いいねした人リスト""" 12 def get(self, request,*args, **kwargs): 13 post = User.objects.values('liked') 14 context = {} 15 context['all_like_list'] = Like.objects.filter(post=='title') 16 return render(request, 'app/like_user_list.html', context) 17

python

1-models.py- 2 3class Item(models.Model): 4 post_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 5 title = models.CharField(verbose_name='タイトル',max_length=20,help_text='20文字以内') 6介',max_length=300,blank=True,null=True,) 7 created_at = models.DateTimeField(verbose_name='登録日',auto_now_add=True) 8 image = StdImageField('画像', blank=True, null=True) 9 liked = models.ManyToManyField('User', blank=True, related_name='likes') 10 11class User(AbstractBaseUser, PermissionsMixin): 12 email = models.EmailField(_('email address'), null=True) 13 user_name = models.CharField(_('ユーザーネーム'), max_length=30,unique=True) 14 icon = StdImageField('アイコン', help_text='', blank=True, null=True) 15 favorite = models.ManyToManyField(Item, verbose_name='保存した記事', blank=True) 16 17 liked = models.ManyToManyField(Item, blank=True, related_name='likes') #追加 18 19class Like(models.Model): 20 user = models.ForeignKey(User, on_delete=models.CASCADE) 21 post = models.ForeignKey(Item, on_delete=models.CASCADE) 22 value = models.CharField(choices=LIKE_CHOICES, max_length=8) 23 updated = models.DateTimeField(auto_now=True) 24 created = models.DateTimeField(auto_now_add=True) 25 26 def __str__(self): 27 return f"{self.user}-{self.post}-{self.value}"

抽出方法についてはDjango データベース操作 についてのまとめを参考にさせて頂きました。
そもそもfilter()使う必要がないのでしょうか?参考サイトなども教えていただけますと幸いです。
何か必要なものがあれば追記したしますのでよろしくお願いいたします。

###追記
filter()をかけて試したのですが、TypeError: cannot unpack non-iterable bool objectのエラーがでてしまいました。

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

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

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

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

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

yamap55

2021/04/15 05:03

Like.objects.filter(post__title='記事タイトル') で、タイトルが「記事タイトル」となっているLikeが取れるかと思いますが、そういう事ではないですか? Like.objects.order_by('post').all() で記事順に並べば良い?という事ですか? 具体的なRDBに入っているデータと、実現したい形を示すと回答が付くかと思います。
Mario_11

2021/04/15 06:27

説明が下手で申し訳ありません。 実現したいことは、SNSの様に「記事毎に"いいね"をした人たちを一覧で表示させる」処理です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問