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})
...
