使用django-modeltransltation注册用于转换的模型会导致MPTTModel出错

时间:2018-04-04 13:08:07

标签: python django django-models django-mptt django-modeltranslation

我正在django 2.0.1使用django-modeltranslation 0.12.2django-mptt 0.9.0

当我尝试注册扩展MPTTModel的翻译模型时,我收到了错误:

File "/home/peter/Desktop/dokkanz/listing/urls.py", line 3, in <module>
    from . import views
  File "/home/peter/Desktop/dokkanz/listing/views.py", line 16, in <module>
    class CategoryListView(ListAPIView):
  File "/home/peter/Desktop/dokkanz/listing/views.py", line 17, in CategoryListView
    queryset = Category.objects.root_nodes()
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 72, in wrapped
    return method(self, *args, **kwargs)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 635, in root_nodes
    return self._mptt_filter(parent=None)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 72, in wrapped
    return method(self, *args, **kwargs)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 410, in _mptt_filter
    return qs.filter(**self._translate_lookups(**filters))
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 100, in get_queryset
    self.tree_id_attr, self.left_attr
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/modeltranslation/manager.py", line 379, in order_by
    return super(MultilingualQuerySet, self).order_by(*new_args)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/django/db/models/query.py", line 1013, in order_by
    obj = self._chain()
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/django/db/models/query.py", line 1156, in _chain
    obj = self._clone()
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/modeltranslation/manager.py", line 234, in _clone
    return super(MultilingualQuerySet, self)._clone(**kwargs)
TypeError: _clone() got an unexpected keyword argument '_rewrite'
kanz/lib/python3.6/site-packages/mptt/managers.py", line 72, in wrapped
    return method(self, *args, **kwargs)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 635, in root_nodes
    return self._mptt_filter(parent=None)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 72, in wrapped
    return method(self, *args, **kwargs)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 410, in _mptt_filter
    return qs.filter(**self._translate_lookups(**filters))
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/mptt/managers.py", line 100, in get_queryset
    self.tree_id_attr, self.left_attr
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/modeltranslation/manager.py", line 379, in order_by
    return super(MultilingualQuerySet, self).order_by(*new_args)
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/django/db/models/query.py", line 1013, in order_by
    obj = self._chain()
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/django/db/models/query.py", line 1156, in _chain
    obj = self._clone()
  File "/home/peter/.virtualenvs/dokkanz/lib/python3.6/site-packages/modeltranslation/manager.py", line 234, in _clone
    return super(MultilingualQuerySet, self)._clone(**kwargs)
TypeError: _clone() got an unexpected keyword argument '_rewrite'

我的models.py

class Category(MPTTModel):
    name = models.CharField(max_length=128)
    slug = models.SlugField(max_length=50)
    description = models.TextField(blank=True)
    image = models.ImageField(upload_to=category_image_path, blank=True)
    has_variants = models.BooleanField(default=True)
    parent = TreeForeignKey(
        'self', null=True, blank=True, related_name='children',
        on_delete=models.CASCADE)

我的translation.py

from modeltranslation.translator import register, TranslationOptions
from .models import Category

@register(Category)
class CategoryTranslationOptions(TranslationOptions):
    fields = ('name', 'description',)

我认为此错误是由TreeManagerMultilingualManager之间的冲突引起的。我尝试将Category模型的管理员更改为默认models.Manager,但工作正常。

0 个答案:

没有答案
相关问题