30👍
Category.objects.get(pk=2).get_descendants(include_self=True)
This will get you all category descendants including self.
Assuming that your Product model has a Foreign key category, you can use:
Product.objects.filter(category__in=Category.objects.get(pk=2)\
.get_descendants(include_self=True))
3👍
Django mptt provides two methods to retrieve children.
From the docs
MPTTModel.get_children(*args, **kwargs)
Returns a QuerySet containing the immediate children of this model >instance, in tree order.
The benefit of using this method over the reverse relation provided by the ORM to the instance’s children is that a database query can be avoided in the case where the instance is a leaf node (it has no children).
If called from a template where the tree has been walked by the cache_tree_children filter, no database query is required.
And
MPTTModel.get_leafnodes(*args, **kwargs)
Creates a QuerySet containing leafnodes of this model instance, in tree order.
If include_self is True, the QuerySet will also include this model instance (if it is a leaf node)
I’m not sure how your models are set up but I’m not sure why you use mptt here. You are using Category/Product but it seems to be student or people and work groups.
Maybe you can define EstablishmentLevel
, Level|
, StudentGroup
, Student
models and instead of using mptt function query something like:
Student.objects.filter(studentgroup__level__pk=1)
See the Django doc
Hope that helped
- How to solve ERROR: Failed building wheel for psycopg2?
- Django creating a form field that's read only using widgets
- Heroku logs for Django projects missing errors
- Getting 415 code with django.test.Client's patch method