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.