diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-09-17 17:07:04 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-09-22 16:45:03 +0200 |
commit | c981656169ed68154798cbd10492be674ba46ed6 (patch) | |
tree | d2182da3c7b978ebbfd57fe6334eca74e15bc74a /ishtar_common/widgets.py | |
parent | fa46a3e8b9006892f8b7fa559c61d41b91c430dc (diff) | |
download | Ishtar-c981656169ed68154798cbd10492be674ba46ed6.tar.bz2 Ishtar-c981656169ed68154798cbd10492be674ba46ed6.zip |
✨ document type field - use select2 widget
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r-- | ishtar_common/widgets.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index d0ade6fea..2e6dc36af 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -276,8 +276,8 @@ class Select2Base(Select2Media): else: attrs["style"] = "width: 370px" - if value: - if type(value) not in (list, tuple): + if value and getattr(self, "multiple", False) and \ + not isinstance(value, (list, tuple)): value = value.split(",") options = "" @@ -352,7 +352,7 @@ class Select2Simple(Select2Base, forms.Select): class Select2Multiple(Select2Base, forms.SelectMultiple): - pass + multiple = True class CheckboxSelectMultiple(CheckboxSelectMultipleBase): @@ -423,6 +423,8 @@ class Select2BaseField(object): def valid_value(self, value): if not self.model: return super(Select2BaseField, self).valid_value(value) + if isinstance(value, self.model): + return True return bool(self.get_q().filter(pk=value).count()) @@ -439,7 +441,15 @@ class Select2MultipleField(Select2BaseField, forms.MultipleChoiceField): class Select2SimpleField(Select2BaseField, forms.ChoiceField): - pass + multiple = False + + def to_python(self, value): + value = super().to_python(value) + if not value or not getattr(self, "model", None) or getattr(self, "remote", False): + return value + if not self.valid_value(value): + return + return self.get_q().filter(pk=value).all()[0] class DeleteWidget(forms.CheckboxInput): |