mirror of
https://github.com/inventree/InvenTree.git
synced 2025-10-03 15:52:51 +00:00
Support import of "choice" fields (#10361)
- Perform reverse lookup of display value
This commit is contained in:
@@ -628,6 +628,38 @@ class DataImportRow(models.Model):
|
|||||||
if value is None and field in default_values:
|
if value is None and field in default_values:
|
||||||
value = default_values[field]
|
value = default_values[field]
|
||||||
|
|
||||||
|
# If the field provides a set of valid 'choices', use that as a lookup
|
||||||
|
if field_type == 'choice' and 'choices' in field_def:
|
||||||
|
choices = field_def.get('choices', None)
|
||||||
|
|
||||||
|
if callable(choices):
|
||||||
|
choices = choices()
|
||||||
|
|
||||||
|
# Try to match the provided value against the available choices
|
||||||
|
choice_value = None
|
||||||
|
|
||||||
|
for choice in choices:
|
||||||
|
primary_value = choice['value']
|
||||||
|
display_value = choice['display_name']
|
||||||
|
|
||||||
|
if primary_value == value:
|
||||||
|
choice_value = primary_value
|
||||||
|
# Break on first match against a primary choice value
|
||||||
|
break
|
||||||
|
|
||||||
|
if display_value == value:
|
||||||
|
choice_value = primary_value
|
||||||
|
|
||||||
|
elif (
|
||||||
|
str(display_value).lower().strip() == str(value).lower().strip()
|
||||||
|
and choice_value is None
|
||||||
|
):
|
||||||
|
# Case-insensitive match against display value
|
||||||
|
choice_value = primary_value
|
||||||
|
|
||||||
|
if choice_value is not None:
|
||||||
|
value = choice_value
|
||||||
|
|
||||||
data[field] = value
|
data[field] = value
|
||||||
|
|
||||||
self.data = data
|
self.data = data
|
||||||
|
Reference in New Issue
Block a user