2012-03-21 3 views
1

나는 내 프로젝트에서 django-mptt를 설정하는 동안 잠시 노력한다. Django-mptt TreeManyToManyField가 작동하지 않습니까?

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 

내가 장고 - mptt 그냥 TreeManyToManyField을 지원하지 생각 나는이처럼 보이는 acordingly tutorial 변경된 모델에서 샘플을했다. 누구나 같은 문제가 있었습니까 ??

답변

2

노드는 하나 이상의 부모를 가질 수 없습니다. 이는 데이터 구조를 근본적으로 변화시킵니다. 더 이상 나무가 아니며 임의의 그래프입니다.

django-mptt는 트리 만 처리합니다. 대형 그래프 데이터베이스를 사용하는 경우 매우 다른 문제가 발생합니다. RDBMS 대신 그래프 데이터베이스를 사용하는 방법을 살펴볼 수 있습니다.

는 AFAIK 그래프 구조를 쉽게 더 장고 애플 리케이션을 없다,하지만 다시 난 정말

유용한 링크 :) 필요 적이 :

+0

을 감사! 나는 좋은 그래프 데이터베이스 Neo4j를 발견했으며 Djano에서 자체적으로 통합되었다. (neo4django 패키지 [link] (https://github.com/scholrly/neo4django) 확인 - 불행히도 건설 중이다. 나는 그것을 조금 더하려고 노력한다! – delete