2017-09-14 4 views
0

Ich arbeite an einer benutzerdefinierten Anforderung, die bestimmte Optionsattribute anpassen muss. Mein Dropdown-Menü zeigt die Liste der Optionen an, und einige dieser Optionen sollten unter bestimmten Bedingungen als deaktiviert angezeigt werden.So passen Sie Attribute von Formularen an.Wählen Sie Optionen in Django

List of options along with disabled options

ich die Select widget attributes indem disabled = disabled Customizing haben versucht. Aber das deaktiviert das gesamte Dropdown. Wenn man sich den Code von Django 1.11.5 anschaut, scheint es, dass die auf Select angewendeten Attribute auf seine Optionen angewendet werden.

Kann jemand bitte vorschlagen, wie diese Funktionalität erreicht werden kann?

Danke

Antwort

0

Ich glaube, Sie können Unterklasse der django.forms.widgets.Select Widget, neue Parameter disabled_choices seiner __init__ Funktion und überschreiben die create_option Methode wie folgt übergeben:

das hilft
class MySelect(Select): 

    def __init__(self, attrs=None, choices=(), disabled_choices=()): 
     super(Select, self).__init__(attrs, choices=choices) 
     # disabled_choices is a list of disabled values 
     self.disabled_choices = disabled_choices 

    def create_option(self, name, value, label, selected, index, subindex=None, attrs=None): 
     option = super(Select, self).create_option(name, value, label, selected, index, subindex, attrs) 
     if value in disabled_choices: 
      option['attrs']['disabled'] = True 
     return option 

Hoffnung.

+0

Vielen Dank. Es ist wirklich eine große Hilfe. Ich könnte es nach ein paar kleineren Änderungen arbeiten lassen :-) –

Verwandte Themen