2013-02-14 19 views

Odpowiedz

13

Jeśli mówisz Kolby-admin z sqlalchemy Models, a ty deklarując widok przez dziedziczenie z sqlamodel.ModelView, można po prostu dodać do Twoja definicja klasy:

class MyModelView(BaseModelView): 
    column_list = ('name', 'last_name', 'email') 
    form_widget_args = { 
     'email':{ 
      'disabled':True 
     } 
    } 
+9

To może nie być, co chcesz. Zaimplementowałem to, ale zauważyłem, że pola, które zostały wyłączone, zostały ** skasowane ** po przesłaniu. Kiedy zamiast tego użyłem 'readonly', otrzymałem oczekiwane zachowanie (wartość się nie zmienia). – Ian

6

Podczas renderowania pola w szablonie Jinja, tylko przechodzą w disabled=true jeśli WTForms nie rozpoznaje kwarg, to po prostu przechodzi, że jest to atrybut do elementu html.

<form> 
{{ form.example(disabled=True) }} 
</form> 
7

spróbuj tego:

class DisabledTextField(TextField): 
    def __call__(self, *args, **kwargs): 
    kwargs.setdefault('disabled', True) 
    return super(DisabledTextField, self).__call__(*args, **kwargs) 
8

Nie mam wystarczającej reputacji, aby skomentować odpowiedź @ thkanga, która jest bardzo bliska temu, co dla mnie zadziałało. Atrybut disabled wyklucza pole z danych POST, ale użycie readonly przyniosło pożądany efekt.

from wtforms.fields import TextField 

class ReadonlyTextField(TextField): 
    def __call__(self, *args, **kwargs): 
    kwargs.setdefault('readonly', True) 
    return super(ReadonlyTextField, self).__call__(*args, **kwargs) 
+0

Czy jest jakiś sposób, aby ustawić to vai the follow? form_widget_args = { 'type_values': { 'tylko do odczytu': 'tylko do odczytu' } } –

+0

Lawrence, chciałbym podać form_extra_fields jak o tej samej nazwie jak pole, które chcesz mieć readOnly i zastąpi on to pole. – pip

+0

tj. Form_overrides = dict (nazwa_pocztowa = ReadonlyTextField) lub ewentualnie form_extra_fields = dict (nazwa_pliku = ReadonlyTextField ('Label', ...)) – pip

1

mam dziwne błędy, kiedy próbował użyć disabled dla pól tekstowych, więc użyłem readonly zamiast:

class MyModelView(BaseModelView): 
    column_list = ('name', 'last_name', 'email') 
    form_widget_args = { 
     'email':{ 
      'readonly':True 
     } 
    } 
Powiązane problemy