2013-03-25 2 views
0

여기 내 장고 코드,장고 SelectTimeWidget는 읽기 전용

class Fpool_Booked(forms.Form): 

    From = forms.CharField(label = 'Departure Place',max_length = 30,widget=forms.TextInput(attrs={'readonly':'readonly'}),error_messages = {'required': 'Please enter From where do you want to go'}) 

    To = forms.CharField(label = 'Destination Place',max_length = 30,widget=forms.TextInput(attrs={'readonly':'readonly'}),error_messages = {'required': 'Please enter destination'}) 

    From_Time = forms.TimeField(label = 'Departure Time',widget = SelectTimeWidget(attrs={'readonly':'readonly'},twelve_hr = True)) 

당신은 내가 읽기 전용 내가 attrs={'readonly':'readonly'}을 시도했지만 작동하지 않습니다 내가 SelectTimeWidget을 만들고 싶어 같은 방식으로, 잘 작동 readly 텍스트 필드를 만든 볼 수 예상대로 이 문제를 해결할 방법이 있습니까/

+0

위젯을 읽기 전용으로 사용하려는 이유는 무엇입니까? 그냥 텍스트 위젯을 표시 –

+0

흠 그러나이 방법으로 시도하고 싶었어 그래서 내 다른 CSS 템플릿에 영향을 미치지 않습니다 ... – Friend

답변

0

SelectTimeWidget은 SelectDateWidget을 기반으로하는 사용자 정의 위젯입니다. 나는 그것이 '읽기 전용'을 지원한다고 생각하지 않는다. 아마 대답을 과도했지만 나는 연극을했고, 당신이 정말로 그것을 수행하려는 경우 도움이 될 수 있습니다 다음과 ...

I dropped the SelectTimeWidget snippet into my code로 와서 다음 줄을

def __init__(self, attrs=None, hour_step=None, minute_step=None, second_step=None, twelve_hr=False): 

을 변경 :

def __init__(self, attrs={'readonly':'readonly'}, hour_step=None, minute_step=None, second_step=None, twelve_hr=False): 

과 :

select_html = Select(choices=hour_choices).render(self.hour_field % name, hour_val, local_attrs) 
select_html = Select(choices=minute_choices).render(self.minute_field % name, minute_val, local_attrs) 
select_html = Select(choices=second_choices).render(self.second_field % name, second_val, local_attrs) 

사람 :

select_html = TextInput().render(self.hour_field % name, hour_val, local_attrs) 
select_html = TextInput().render(self.minute_field % name, minute_val, local_attrs) 
select_html = TextInput().render(self.second_field % name, second_val, local_attrs) 

양식 필드에 값을 게시하고 더 동적으로 양식의 값에 액세스하고 즉시 양식을 변경하려면 다음과 같은 양식 스타일을 사용했습니다. 님

form = time_form({'From_Time':'12:34:56 P.M.',}) 

주 I가 = { 'this.form.submit()'의 onchange '} attrs에 남아 : 그것은 모습 뷰

class time_form(forms.Form): 
    def __init__(self, *args, **kwargs): 
     super(time_form, self).__init__(*args, **kwargs) 

     self.fields['From'] = forms.CharField(widget=forms.TextInput(attrs={'onchange':'this.form.submit()'})) 
     self.fields['To'] = forms.CharField(widget=forms.TextInput(attrs={'onchange':'this.form.submit()'})) 
     self.fields['From_Time'] = forms.TimeField(widget = SelectTimeWidget()) 

제가보고 값을 설정 재밌을 때 당신이 동적으로 양식을 업데이 트하려는 경우에 대비하여 (그리고 attr =가 표시되는 위치를 보여주기 위해), 이것이 선택된 위젯에서 가장 잘 작동하는 경향이 있지만. 폼에서 'From'및 'To'값 (예 : var = args [0] .get ('To'))에 액세스하고 'From_Time'(args [0] [ 'From_Time'] = 일부 함수).

두 번째로, 'From_Time'위젯은 이제 시간 형식을 구문 분석하여 읽을 수있는 읽기 전용 TextInput 상자가되어 복잡한 방식으로 보입니다.

+0

예이 작품 :) – Friend

0

나는 나의 형태로 선택 위젯을 사용하지 않도록해야하고 난 그냥 현장하지 않으려면이 코드를 사용 :

def __init__(self, *args, **kwargs): 
    self.fields['field_name'].widget.attrs['disabled'] = True 

셀렉트 입력 필드에는 '읽기 전용'속성이 없습니다입니다.