2011-07-14 17 views
0

私のdjangoアプリでは、月のドロップダウンリストを作成する必要があります。ビューは2桁の値(1日目は1で、1日目は1ではない)テンプレートの日のリストを渡さなければならないので、select要素のオプションを作成することができます。djangoのドロップダウンリストの月のリストを作成

これを試してみましたが、ドロップダウンリストが正しく作成されました。選択した日は、datetime.datetimeと比較するためにunicode(26日目の選択ではu'26 ')が返されます。今日の()。日。すべてが動作します..これは、日のリストを作成する正しい方法であれば心配です。つまり、別のintのリストでUnicode文字列のリストを拡張するのが正しいとは限りません。しかし、私はよりよい解決策を考えることができませんでした。

私は助けを借りて助けてください。

ありがとう

マークです。

views.py

...  
days=[u'01',u'02',u'03',u'04',u'05',u'06',u'07',u'08',u'09'] 

days.extend([x for x in range(10,32)])  
... 

とテンプレートで

... 
<form action="."> 
... 
    <select name="day" id="dayselect"> 
     {% for aday in days %} 
      <option value={{aday}} > {{aday}}</option> 
     {% endfor %} 
    </select> 

    <input type="submit" value="entries of the day" /> 
</form> 
... 

にurls.pyは

url(r'^entries/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$','myapp.views.entries_for_day', 
{ 
    'template_name':'myapp/entries_for_day.html', 
    'page_title':'Entries of the day' 

},name='entries_for_day'), 
+0

jquery calendarを使用していますか?エクストリームプログラミングは、あなたが始めるのを助け、速く終わるのを助ける最も単純な解決策を使用するよう教えています。 – sprezzatura

答えて

2

先頭にゼロが付いた文字列を作成する場合は、文字列の書式設定を使用する必要があります。 たとえば、thisの回答を正確に見ることができます。

あなたの例では、このようなものを使用できます。

days = [u'%02d' % x for x in range(1,32)] 

これは、先行ゼロのリストを作成します。

私は問題自体に疑問があります。それより少ない月の31日をすべて選択できるはずですか? - 単にdatetimeオブジェクトをテンプレートに送信して、その与えられた月の日数を出力することができます。

しかし、あなたが主張する場合:

を別のオプションは、範囲(1、32)の単純なリストに送信して、テンプレートでそれをフォーマットすることができます:

 
{% for day in days %} 
    {{ day|stringformat:"02d" }} 
{% endfor %} 

もう一つは作るために、おそらくですビューは1桁の入力を受け入れます。

+0

ありがとうございます。 – markjason72

0

文字列の補間を有しています。

days = [u'%02d' % x for x in range(1, 32)] 
関連する問題