If your database supports it you could set up a partial unique index.
A partial index is an index built over a subset of a table; the subset is defined by a conditional expression (called the predicate of the partial index). The index contains entries only for those table rows that satisfy the predicate.
Below version 2.2 there's no special Django support for this, but you can set it up in a data migration (see here for more details).
In your case it would look something like:
operations = [
migrations.RunSQL("CREATE UNIQUE INDEX running_name ON app_process(isRunning, name)
WHERE isRunning"),
]
Starting with version 2.2 you can simply declare the partial unique index in your model:
from django.db.models import Q, UniqueConstraint
class Process(Place):
...
class Meta:
constraints = [UniqueConstraint(fields=["name"], condition=Q(isRunning=True))]