2012-03-21 3 views
1

私のプロジェクトでdjango-mpttを少しセットアップしようとしています。私はこのようになりますどのacordingly tutorialからサンプルを取って、変更したモデル: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をサポートしていないと思います。誰もが同じ問題を抱えていましたか?

答えて

2

ノードは複数の親を持つことはできません。それは基本的にあなたのデータ構造を変えます - それはもはや木ではなく、任意のグラフです。

django-mpttはツリーのみを処理します。大きなグラフデータベースをお持ちの場合は、非常に異なる問題があります。 RDBMSではなくグラフデータベースを使用して調べることができます。

は、私の知る限り、グラフ構造が簡単に何のDjangoのアプリはありませんが、その後、再び、私は本当に

役立ちリンク:)するために必要なことがありません:

+0

をありがとう!私は良いグラフデータベースNeo4jを見つけました。それはDjanoで独自の統合をしています(neo4djangoパッケージをチェックしてください(https://github.com/scholrly/neo4django) - 残念ながら構築中です。私はもう少しそれを再生しようとしています! – delete

関連する問題