From e14c41636f7b149192abae62fc83de7345931bc0 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Wed, 25 Jul 2012 10:10:46 +0800 Subject: [PATCH] Pass into the model only existing fields Model fields has default values and when field doesn't exists in item container, added `None` instead default value. My patch solves this problem. --- scrapy/contrib_exp/djangoitem.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scrapy/contrib_exp/djangoitem.py b/scrapy/contrib_exp/djangoitem.py index 1abe98bfd..571dace5c 100644 --- a/scrapy/contrib_exp/djangoitem.py +++ b/scrapy/contrib_exp/djangoitem.py @@ -25,7 +25,8 @@ class DjangoItem(Item): django_model = None def save(self, commit=True): - modelargs = dict((f, self.get(f, None)) for f in self._model_fields) + modelargs = dict((k, self.get(k)) for k in self._values + if k in self._model_fields) model = self.django_model(**modelargs) if commit: model.save()