Django-mptt TreeManyToManyField не работает? - PullRequest
1 голос
/ 22 марта 2012

Я пытаюсь немного настроить django-mptt в своем проекте. Я взял образец из учебника и изменил модель в соответствии с этим:

class Genre(MPTTModel):
pk = models.AutoField(primary_key=True)
name = models.CharField(max_length=50, unique=True)
parent = TreeManyToManyField('self', null=True, blank=True, related_name='children')

class MPTTMeta:
    order_insertion_by = ['name']

К сожалению, консоль выводит что-то вроде этого:

/srv/tokedu/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/db/models/base.pyc in _set_pk_val(self, value)
    426 
    427     def _set_pk_val(self, value):
--> 428         return setattr(self, self._meta.pk.attname, value)
    429 
    430     pk = property(_get_pk_val, _set_pk_val)
/srv/tokedu/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/db/models/base.pyc in _set_pk_val(self, value)
    426 
    427     def _set_pk_val(self, value):
--> 428         return setattr(self, self._meta.pk.attname, value)
    429 
    430     pk = property(_get_pk_val, _set_pk_val)
RuntimeError: maximum recursion depth exceeded

Я думаю, что django-mptt просто не поддерживает TreeManyToManyField. У кого-нибудь была такая же проблема ??

1 Ответ

3 голосов
/ 23 марта 2012

Узлы не могут иметь более одного родителя.Это коренным образом меняет вашу структуру данных - это больше не дерево, а произвольный граф.

django-mptt обрабатывает только деревья.Если у вас большая графическая база данных, у вас совсем другая проблема.Возможно, вы захотите изучить использование графической базы данных, а не РСУБД.

AFAIK Нет приложений django, которые упрощают структуру графов, но опять же, мне никогда не было нужно:)

Полезные ссылки:

...