我正在django 2.0.1
使用django-modeltranslation 0.12.2
和django-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',)
我相信这个错误是由 和 之间的冲突引起TreeManager
的MultilingualManager
。我尝试将Category
模型的管理器更改为默认值models.Manager
,并且效果很好。