Problem using django mptt

眉间皱痕 提交于 2019-12-11 05:32:16

问题


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


回答1:


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.




回答2:


I recommend django-polymorphic_tree



来源:https://stackoverflow.com/questions/507006/problem-using-django-mptt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!