Dibidalidomba
Dibidalidomba

Reputation: 777

How to check if ManyToMany field is not empty?

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

Answers (2)

Claudio Oliva
Claudio Oliva

Reputation: 121

This works for me:

if hasattr(example_category, "related_categories"):
    ...

Upvotes: 0

Karina Kozarova
Karina Kozarova

Reputation: 1215

you should use the .exists method:

related_categories = example_category.related_categories
if related_categories.exists():
    # do something

Upvotes: 32

Related Questions