Django と Crispy フォームを使用して、地域フィールドでラジオ選択ウィジェットの初期値/デフォルト値を作成しようとしています。
これを行う最善の方法は、作成時にフォーム クラスに「初期」値を与えることだと言われました。私はこれを試してみまし'CreateForm' object is not callable
た。また、地域フィールドに追加の引数として指定して、フォーム自体で試しましたが、そのエーテルでは成功しませんでした。
ビュー.py:
class CreateRequest(LoginRequiredMixin, CreateView):
model = Request
fields = ['region', 'ddi', 'zen_desk_ticket', 'user_assigned', 'user_requester', 'date_due', 'description']
template_name = "requests_app/create_request.html"
obj = Region.objects.get(name='Chicago')
form_class = CreateForm(initial = {"region": unicode(obj.pk)})
success_url = '/'
def form_valid(self, form):
objects = form.save()
return super(CreateRequest, self).form_valid(form)
フォーム.py:
class CreateForm(ModelForm):
date_due = forms.DateTimeField(
widget=DateTimePicker(options={"format": "YYYY-MM-DD HH:MM",
"pickTime": True}))
region = forms.ModelChoiceField(widget=forms.RadioSelect, queryset= Region.objects.all(),
empty_label=None)
class Meta:
model = Request
exclude = ('completed', 'date_completed')
def __init__(self, *args, **kwargs):
super(CreateForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-lg-2 control-label'
self.helper.field_class = 'col-lg-4'
self.helper.layout = Layout(
Fieldset('Create',
'region',
'user_assigned',
'user_requester',
'date_due',
'description',
),
FormActions(
Submit('submit', 'Submit', css_class='btn-primary')
)
)