Anonymous avatar Anonymous committed 579f1f9 Merge


Comments (0)

Files changed (2)


     def to_python(self, values):
         if not isinstance(values, dict):
             return values
         module, model = values.pop('_module', None), values.pop('_model', None)
+        if module is not None:
+            model = getattr(import_module(module), model)
+        else:
+            model = self.embedded_model
-        # TODO/XXX: Workaround for old Python releases. Remove this someday.
-        # Let's make sure keys are instances of str
-        values = dict([(str(k), v) for k,v in values.items()])
-        if module is not None:
-            return getattr(import_module(module), model)(**values)
-        return self.embedded_model(**values)
+        data = {}
+        for field in model._meta.fields:
+            try:
+                # TODO/XXX: str(...) is a workaround for old Python releases.
+                # Remove this someday.
+                data[str(field.attname)] = values[field.column]
+            except KeyError:
+                pass
+        return model(**data)


     class EmbeddedModel(models.Model):
         some_relation = models.ForeignKey(DictModel, null=True)
-        someint = models.IntegerField()
+        someint = models.IntegerField(db_column='custom')
         auto_now = models.DateTimeField(auto_now=True)
         auto_now_add = models.DateTimeField(auto_now_add=True)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.