Django-mptt order

前端 未结 2 619
说谎
说谎 2021-02-04 17:08

In my project I am using django-mptt for categories.

My model:

class Category(models.model):
    name = models.CharField()
    parent = models.ForeignKey         


        
相关标签:
2条回答
  • 2021-02-04 17:16

    When defining the model you can specify the ordering with "order_insertion_by".

    So something like this:

    class Category(MPTTModel):
        name = models.CharField()
        parent = models.ForeignKey("self", blank=True, null=True, 
                 related_name="sub_category")
    
        class MPTTMeta:
            order_insertion_by = ['name']
    

    Then you can rebuild your database with Category.tree.rebuild() which should respect the ordering specified.

    0 讨论(0)
  • 2021-02-04 17:19

    With recent mptt versions (e.g. 0.8.7) you should use the TreeForeignKey field:

    from mptt.models import MPTTModel
    from mptt.fields import TreeForeignkey
    
    class Category(MPTTModel):
        name = models.CharField()
        parent = TreeForeignKey("self", 
                               blank=True, 
                               null=True, 
                               related_name="sub_category")
    
        class MPTTMeta:
            order_insertion_by = ['name']
    
    0 讨论(0)
提交回复
热议问题