Вы должны использовать выражение F , чтобы избежать возможного условия гонки при вычитании количества мест.
from django.db.models import F
from myproject.models import Train
train = Train.objects.get(some_train_id)
train.seats = F('seats') - 1
train.save()
Что это будет делать, это использовать базу данныхсемантика для уменьшения значения.Таким образом, даже если у вас есть люди, занимающие место в одно и то же время, вы установите правильный номер в БД.
Вы можете позвонить по этому вопросу практически из любого места.Обычно это будет представление в вашем приложении Django.