Properly handle "False" as a text parameter when initialising NetBoxModelForm

This commit is contained in:
Peter Eckel 2024-08-20 08:56:54 +00:00
parent e8a5fa32ce
commit ce7343c279
2 changed files with 11 additions and 1 deletions

View File

@ -1,6 +1,7 @@
import json import json
from django import forms from django import forms
from django.forms.fields import BooleanField, NullBooleanField
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db.models import Q from django.db.models import Q
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -31,6 +32,15 @@ class NetBoxModelForm(CheckLastUpdatedMixin, CustomFieldsMixin, TagsMixin, forms
""" """
fieldsets = () fieldsets = ()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for key, value in self.initial.items():
if key not in self.fields:
continue
if isinstance(self.fields[key], (BooleanField, NullBooleanField)) and self.initial[key] == "False":
self.initial[key] = False
def _get_content_type(self): def _get_content_type(self):
return ContentType.objects.get_for_model(self._meta.model) return ContentType.objects.get_for_model(self._meta.model)

View File

@ -55,7 +55,7 @@ def prepare_cloned_fields(instance):
for key, value in attrs.items(): for key, value in attrs.items():
if type(value) in (list, tuple): if type(value) in (list, tuple):
params.extend([(key, v) for v in value]) params.extend([(key, v) for v in value])
elif value is not None and (key.startswith('cf_') or value is not False): elif value is not None:
params.append((key, value)) params.append((key, value))
else: else:
params.append((key, '')) params.append((key, ''))