how to verify if object exist in manytomany

I advise you to use:

if beer.salas_set.filter(pk=sala.pk).exists():
    # do stuff

If you use sala in beer.salas_set.all() instead, it selects all records from the relation table and loops over them to find, whether the given object is there or not. However, beer.salas_set.filter(pk=sala.pk).exists() only selects zero or one row from the database and immediately gives the result (without looping).


Django 4.0 has added a new contains() method to QuerySets, which is a natural fit for this use-case.

if beer.salas_set.contains(sala):
    # do stuff

With your solution there might be a problem since name of salas is not unique. So, if you filter by the name of the sala expecting to find one and only one sala, that might not happen.

I advice you to do:

if sala in beer.salas_set.all():
    #do stuff:
else:
    # do other stuff

that way, beer.salas_set.all() will return a QuerySet in which you can check if a specific object is there with the 'in' keyword.