diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php
index 4a31eecd9e7dd97628837c6029d4829757592db5..61142fdab28a39b32a07d317dc8f441d951f2d16 100644
--- a/include/class.dynamic_forms.php
+++ b/include/class.dynamic_forms.php
@@ -1198,7 +1198,9 @@ class SelectionField extends FormField {
     function to_php($value, $id=false) {
         if ($value === null && $id === null)
             return null;
-        if ($id && is_int($id))
+        if ($value instanceof DynamicListItem)
+            $item = $value;
+        elseif ($id && is_int($id))
             $item = DynamicListItem::lookup($id);
         # Attempt item lookup by name too
         if (!$item || ($value !== null && $value != $item->get('value'))) {