2012-11-28 3 views
2

변경 난 단지 세 개의 필드가 인라인의 formset이 qty 입력 필드가 정말 작습니다 (테스트를 위해 30 개가 있습니다). 그러나 인라인 formset 통해이 양식을 렌더링 할 때 특성이 전혀 설정되지 않습니다. 내보기에서 formset의 생성은 다음과 같습니다.장고는 인라인의 formset의에서 textInput 사이즈 속성

pFormSet = inlineformset_factory(Estimate_Construction, Estimate_Product_Details, form = Product_Form) 

어디로 가고 있습니까? qty 필드의 크기가 변경되지 않는 이유는 무엇입니까?

+0

크기 대신 너비를 사용해 보셨나요? – karthikr

+0

@karthikr : 예, 행운을 빌어 폭을 시도했습니다. 또한 그것의 지옥에 대한 cols (textareas 사용 cols 및 행) 그냥. – Garfonzo

답변

5

편집 : 클래스를 입력 필드로 설정하고 CSS에 너비를 지정해야합니다. 그렇게하면 다른 클라이언트의 템플릿과 템플릿을 분리하여 전달할 수 있습니다.

아마도 .attrs['size'] = 30을 사용하는 대신 .attrs['class'] = 'some_class'을 사용하고 HTML 템플릿에 클래스를 정의하고 다른 크기를 처리하십시오.

이 작동합니다 :

class Product_Form(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(Product_Form, self).__init__(*args, **kwargs) 
     self.fields['qty'].widget.attrs['size'] = 30 

    class Meta: 
     model = Estimate_Product_Details 
     fields = ('CID', 'qty') 
+1

이것은 작동하지 않았습니다. – Garfonzo

+0

오류가 발생 했습니까? 내가 처리 할 수있는 방법은 jQuery를 사용하는 것이지만 widget attrs를 추가하는 것은 생성자에서 작동해야합니다. – Furbeenator

+0

아니요, 오류가 없습니다 - 아무렇지도 않게 힌트를 표시하지 않고 방금로드 한 페이지입니다 (내가 틀린 양식의 스타일을 지정했는지 궁금하게 생각합니다.). 재밌는 아이디어 jQuery. 나는 그것을 조사 할 것이다. 도와 주셔서 감사합니다. :) – Garfonzo

0

은 또한 @ Furbeenator의 코드에 문제가 있었다. 그러나 결과 HTML을 검사 할 때 <input> 태그에 size 특성이 올바르게 추가되고 있음을 발견했습니다.

문제 : 자체 CSS 정의로 <input> 너비를 재정의하는 제 3 자 템플릿을 사용하고있었습니다.

이 솔루션은 size보다는 style 속성으로 폭을 전달하는 것입니다 :

class UserProfileForm(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(UserProfileForm, self).__init__(*args, **kwargs) 
     self.fields['company'].widget.attrs['style'] = "width:500px" 

이 수정 또한 @ Furbeenator의보기 수정을 위해 작동합니다. 나는 JQuery 변형을 시도하지 않았다. (비록 템플릿이 JQuery를 사용하지만, 나는 지금 아니다).

유일한 단점은 픽셀 너비 또는 em/ex와 같은 CSS 단위로 필드 너비가 정의된다는 것입니다. 예전으로 바꾸 겠지만 CSS에 "평균 글자 폭"단위가있어서 "20 글자"를 넣을 수있는 상자를 정의 할 수 있다면 좋을 것입니다.

+0

스타일을 사용하려면 인라인 스타일 태그를 사용하지 말고 입력란에 클래스 속성을 추가하십시오. 그렇게하면 HTML CSS 측면에서 모두 처리됩니다. 보기 코드는 실제로 디스플레이와 분리되어야하므로 아마도 클래스 속성이 가장 좋을 것입니다. – Furbeenator

+0

일반적인 경우에 이것은 의미가 있습니다 - 저는 디스플레이에서 뷰를 분리하는 것에 동의합니다. 함께 작업 할 수있는 기존 템플릿이 있습니다 - 지금까지 CSS 파일을 엉망으로 만들고 싶지 않았습니다. – winwaed

+0

나는 그것을 듣는다. 때로는 해결 방법이 현재의 문제 범위에 대한 최선의 대답입니다. – Furbeenator

0

양식 입력마다 CSS 클래스 이름을 추가 할 수도 있습니다. 이를 위해 양식 입력 정의에 위젯 attr을 추가해야합니다. 벨로우즈처럼 :