Reputation: 777
How do I check if there are any ManyToMany field objects related to my model object?
For example, I have a model:
class Category(models.Model):
related_categories = models.ManyToManyField('self', blank=True)
I want to do something only if there are related objects existing:
if example_category.related_categories:
do_something()
I tried to do example_category.related_categories
, example_category.related_categories.all()
, example_category.related_categories.all().exists()
, example_category.related_categories.count()
, but none of these works for me.
I have no any additional conditions to filter by.
Is there any easy way to check emptiness of this field?
Upvotes: 21
Views: 11639
Reputation: 121
This works for me:
if hasattr(example_category, "related_categories"):
...
Upvotes: 0
Reputation: 1215
you should use the .exists method:
related_categories = example_category.related_categories
if related_categories.exists():
# do something
Upvotes: 32