Problem using django mptt

2019-07-29 23:14发布

I am having problem implementing django mptt.

Here is my model:

   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'])

And

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

So what I am looking at is how to add Financial as an child to Company. I tried mptt.register(Financials, parent = Company) which of course give me error.

so mytree structure will be:

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

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

Thanks

2条回答
时光不老,我们不散
2楼-- · 2019-07-29 23:26

Django-mptt does not support multiple types of object in the same tree. You could have Financial and Company both inherit from the same parent class, and then build the tree out of instances of that parent class. You'd need to store a "content type" field on the parent class so you can cast instances of the parent class to the proper subclass. This is a gross hack though, as it violates the spirit of inheritance. A Financial is not a Company, it's an attribute of a Company. The correct answer is to fix your ACL design so you can use a ForeignKey.

查看更多
做个烂人
3楼-- · 2019-07-29 23:27

I recommend django-polymorphic_tree

查看更多
登录 后发表回答