0

データベース内の多数の投稿に存在する年を見つけることに基づいたオプションの ModelChoiceField を作成しようとしています。

たとえば、DateTimeフィールドを使用してデータベースに保存された投稿があります。私がやろうとしているのは、ポスト テーブルに存在する年の範囲に基づいたオプションを使用してフォームを作成することです。

すなわち

フィールド date_created を持つ投稿があります。値は

2013-06-27 03:21:15

そして、値を持つ別のものがあります

2012-06-27 03:00:20

重複のない投稿テーブルに存在する各年の選択オプションを含むフォームを表示したい。

<option value="2013">2013</option>
<option value="2014">2014</option>

ModelChoiceField を使用すると、単一のクエリでこれを行うことができますか、それとも年を含むリストを処理して構築する必要がありますか?

4

2 に答える 2

1

私を正しい方向に向けてくれたlaloに感謝します。私は以下を使用してそれを理解することができました;

    years_list = []
choices = []
year_list = Post.objects.all().values_list('date_created').distinct()

for years_avail in year_list:
    years_list.append(years_avail[0].strftime('%Y'))

for year in years_list:
    choice =(year, year)
    choices.append(choice)

years = forms.ChoiceField(choices, label='') 

これはこれを行う良い方法ですか、それとも非効率的/間違っていますか?

于 2013-06-29T12:23:46.853 に答える
0

ModelChoiceFieldは、外部キーに基づくモデル選択用です。ChoiceFieldを使用して、実行時にオプションを生成する必要があると思います。

フォームをどこで使用しているかを教えてください。

于 2013-06-29T03:59:07.993 に答える