「デフォルト」値を持つ整数フォーム フィールドが必要です。ただし、実行時にこの値を定義する必要があります。
私は次のようにします:
# at my form constructor:
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=ErrorList,
label_suffix=':', empty_permitted=False):
super(FlatSearchForm, self).__init__(data, files, auto_id, prefix, initial, error_class, label_suffix,
empty_permitted)
min_price = ... # some code to find the minimum price
self.price_min = min_price # will be used later
max_price = ... # some code to find the maximum price
self.price_max = max_price
# here we go:
self.fields['price_from'] = forms.IntegerField(min_value=min_price, max_value=max_price, initial=min_price)
self.fields['price_to'] = forms.IntegerField(min_value=min_price, max_value=max_price, initial=max_price)
# ...
# how I use the form (in views.py):
class SearchFlatView(ListView):
model = Flat
context_object_name = 'flats'
template_name = 'catalog/search.html'
def get_context_data(self, **kwargs):
context = super(SearchFlatView, self).get_context_data(**kwargs)
context['form'] = FlatSearchForm(self.request.GET)
return context
問題は、{{form.price_from}} と {{form.price_to}} を使用してフィールドをレンダリングすると、フォームに値が表示されないことです。これらのフィールドは空です。
私が間違っていることを教えてください。