2017-11-26 8 views
1

質問は簡単です。複数のユーザーがレシピを提出するレシピウェブサイトを構築しています。 私は、すべてのユーザーをリストする1ページを作成し、最新の投稿に基づいてユーザー階層を整理したいと考えています。どのような方法は、views.pyのユーザーを照会し、コンテキストに渡すための最良の方法ですか?Django:最新の投稿に基づいてユーザに問い合わせる方法

コードスニペットは次のようなものです。あなたがのForeignKeyを使用してユーザーにリンクUserRecipeモデルを見ることができるように

models.py

class UserRecipe(models.Model): 
    user = models.ForeignKey(User) 
    name = models.CharField(max_length=200) 
    created_date = models.DateTimeField(default=timezone.now) 

。ですから、views.pyのビューをビルドしてユーザーをリストし、最後のUserRecipe created_dateの日付に基づいてランク付けします。

ユーザーを照会し、UserRecipe created_dateに基づいてそれらを整理するには、それを行う最も良い方法は何ですか?

+0

を、あなたはすべてのレシピFを一覧表示しますかROMを最新のものから古いものまで?または、ユーザーが最近レシピを投稿したユーザーに基づいて、ユーザーを一覧表示しますか? – kujosHeist

+0

どのユーザーが最近レシピを投稿したのかに基づいてユーザーをリストしたい – Arekay

+0

@Arekayはフィルターのクエリで '' 'order_by( ' - time_create')' ''を追加します。 –

答えて

1

あなたは、それはつまり、あなたならば、彼らは

を作成している各レシピのユーザーエントリがあるだろう、しかし重複があるだろう、正しい順序になります次のクエリ

users = User.objects.order_by("-userrecipe__created_date") 

を使用することができますあなたは、クエリの最後に.distinct()を追加することでこれを避けることができ、あなたのDBとしてはpostgresを使用している、そうでなければ、このような重複削除することができます

already_seen = [] 
for u in users: 
    if u not in already_seen: 
     already_seen.append(u) 

users = already_seen 
+0

ありがとうございました。まだドラフトモードになっていますので、まだdb用のsqlite3を使用しています。 distinct()は動かない。あなたのalready_seenソリューションは今私にとって十分です。 – Arekay

関連する問題