Проблема с использованием Django MPTT - PullRequest
1 голос
/ 03 февраля 2009

У меня проблема с реализацией django mptt.

Вот моя модель:

   class Company(models.Model):
       name = models.CharField( max_length=100)
       parent = models.ForeignKey('self', null=True, blank=True, related_name='children')

   mptt.register(Company, order_insertion_by=['name'])

А

class Financials(models.Model):
    company = models.ForeignKey(Company, related_name="financials")
    year = models.IntegerField()
    revenue = models.DecimalField(max_digits = 10, decimal_places = 2)

Итак, я смотрю на то, как добавить финансового в детстве в компанию. Я попытался mptt.register(Financials, parent = Company), что, конечно, дает мне ошибку.

поэтому структура mytree будет:

company1
....................> Financial1
--------------------> Financial 2

company2
-------------------->Financial 3

Спасибо

Ответы [ 2 ]

1 голос
/ 11 октября 2012

Я рекомендую django-polymorphic_tree

1 голос
/ 04 февраля 2009

Django-mptt не поддерживает несколько типов объектов в одном дереве. Вы могли бы иметь Financial и Company оба наследовать от одного родительского класса, а затем построить дерево из экземпляров этого родительского класса. Вам нужно будет сохранить поле «тип контента» в родительском классе, чтобы вы могли привести экземпляры родительского класса к соответствующему подклассу. Это грубый хак, поскольку он нарушает дух наследования. Финансовый это не компания, это атрибут компании. Правильный ответ - исправить дизайн ACL, чтобы вы могли использовать ForeignKey.

...