django-sphinx icon indicating copy to clipboard operation
django-sphinx copied to clipboard

SearchError: Unknown field `<type 'NoneType'>`

Open NewVadim opened this issue 11 years ago • 1 comments

SearchError                               Traceback (most recent call last)
<ipython-input-7-a8f7c64d4ea3> in <module>()
----> 1 Ad.search.create(ad, force_update=True)

/home/test_user/projects/myproject/env/src/django-sphinx/djangosphinx/models.pyc in create(self, *args, **kwargs)

          def create(self, *args, **kwargs):
--->          return self._get_query_set().create(*args, **kwargs)

          def update(self, **kwargs):

/home/test_user/projects/myproject/env/src/django-sphinx/djangosphinx/query/queryset.py in create(self, *args, **kwargs)
                 if isinstance(obj, self.model):
                     # один объект, один документ
-->                  values = (self._get_values_for_update(obj),)
                 elif isinstance(obj, QuerySet):
                     # несколько объектов, несколько документов

/home/test_user/projects/myproject/env/src/django-sphinx/djangosphinx/query/queryset.py in _get_values_for_update(self, obj)
                             f = to_sphinx(getattr(obj, model_filed.column))
                         else:
-->                          raise SearchError('Unknown field `%s`' % type(f))

                 values.append(f)

SearchError: Unknown field `<type 'NoneType'>`

NewVadim avatar Jul 10 '14 08:07 NewVadim

Не знаю верно или нет, на 298 строку в /django-sphinx/djangosphinx/query/queryset.py

elif f is None:
    model_filed = obj._meta.get_field(field)
    if isinstance(model_filed, (
            models.TextField, models.CharField, models.FileField,
            models.FilePathField, models.IPAddressField, models.GenericIPAddressField
    )):
        f = ''
    elif isinstance(model_filed, (
            models.IntegerField, models.BooleanField, models.NullBooleanField,
            models.DateField, models.FloatField, models.BinaryField, models.TimeField
    )):
        f = 0
    elif isinstance(model_filed, (models.FloatField, models.DecimalField)):
        f = 0.0

NewVadim avatar Jul 10 '14 09:07 NewVadim