I'm upgrading a project from
Root cause analysis:
I noticed that with Django1.8, function
However, the newer Django removed this handling, so
My questions: I want to keep the widget, or keep the two fields effect. Any hints will be highly appreciated.
Partial source code of my application:
Python2.7 + Django1.8
to Python3.7 + Django3.1
. The application contains a form using widget AdminSplitDateTime that displays a datetime attribute as two fields separately of date and time. This widget also splits one field into a list of two objects, and the default value is [None, None]
.Root cause analysis:
I noticed that with Django1.8, function
DateTimeField.to_python
has a logic path to handle the list, see if isinstance(value, list):
in the source code here.However, the newer Django removed this handling, so
result = parse_datetime(value.strip())
(see the source code here) triggers an exception AttributeError: 'list' object has no attribute 'strip'
. At the triggering time, variable value
was a list [None, None]
.My questions: I want to keep the widget, or keep the two fields effect. Any hints will be highly appreciated.
Partial source code of my application:
class ProductAdminForm(BaseDynamicEntityForm): model = models.Product def _build_dynamic_fields(self): ... for attribute in self.entity.get_all_attributes()\ .filter(producttemplateattribute__product_template=product_template): value = getattr(self.entity, attribute.slug) ... datatype = attribute.datatype ... elif datatype == attribute.TYPE_DATE: defaults.update({'widget': AdminSplitDateTime}) ...