0

在运行服务器时将 django 从 1.10.6 升级到 1.11 后,我遇到了以下异常。

models.Q 是从 tree.Node 继承的,并且在这两个版本中都没有可能破坏 Q 使用的重大变化。

class LimitTagAssociations():
    def __init__(self, criteria):
        self.criteria = criteria

    def add_to_query(self, query, aliases):
        query.add_q(models.Q(id__in=[1, 2, 3]))
        query.distinct = True

class Cat(models.Model):
    new_and_now_reco_base = fields.IntegerRangeField(min_value=500, max_value=10000, default=1000)
    auto_taggroups = models.ManyToManyField(TagGroup, null=True, blank=True, limit_choices_to=LimitTagAssociations('1'))
    manual_taggroups = models.ManyToManyField(TagGroup, null=True, blank=True, limit_choices_to=LimitTagAssociations('2'))
    abs_url = models.CharField(max_length=255, blank=True, null=True)
    primary_filter_select = models.ManyToManyField(TagGroup, null=True, blank=True, limit_choices_to=LimitTagAssociations('3'))

class CatAdminForm(forms.ModelForm):
    class Meta:
        model = Cat
        exclude = ()



Traceback (most recent call last):
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    autoreload.raise_last_exception()
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 250, in raise_last_exception
    six.reraise(*_exception)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/apps/registry.py", line 116, in populate
    app_config.ready()
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/contrib/admin/apps.py", line 23, in ready
    self.module.autodiscover()
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/utils/module_loading.py", line 50, in autodiscover_modules
    import_module('%s.%s' % (app_config.name, module_to_search))
  File "/usr/lib/python2.7/importlib/__init__.py", line 38, in import_module
    __import__(name)
  File "/srv/webapps/myproj.com/myproj/product/admin.py", line 6, in <module>
    from product.forms import ProdFilterForm, BrandAdminForm
  File "/srv/webapps/myproj.com/myproj/product/forms.py", line 124, in <module>
    class CatAdminForm(forms.ModelForm):
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/forms/models.py", line 252, in __new__
    opts.field_classes)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/forms/models.py", line 177, in fields_for_model
    formfield.queryset = formfield.queryset.complex_filter(limit_choices_to)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/db/models/query.py", line 814, in complex_filter
    clone.query.add_q(filter_obj)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1260, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/srv/webapps/myproj.com/virtualenvs/myproj/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1270, in _add_q
    connector = q_object.connector
AttributeError: LimitTagAssociations instance has no attribute 'connector'
4

0 回答 0