sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan forhindrer man racetilstand i Django på INSERT med begrænsende SUM?

Tak til @Alasdair for at pege mig i den rigtige retning.

Efter at have udfyldt felterne i inst (en ny Expense ), gør:

with transaction.atomic():
    project = models.Project.objects.select_for_update().get(
        pk=project_id)
    cost = project.total_cost()
    budget = project.budget

    if cost + inst.cost > budget:
        raise forms.ValidationError(_('Over-budget'))

    self._inst.save()

Bemærk, at jeg har total_cost defineret som en metode på Project :

class Project:
    def total_cost(self):
        return self.expense_set.all().aggregate(
            t=Sum(F('cost')))['t']



  1. Hvad er grænsen for SQL-variabler, man kan angive i en enkelt execSQL-forespørgsel

  2. hvordan opretter jeg en unik php-side for hver række i en mysql-database

  3. Lagring af strukturerede data i en databasekolonne?

  4. hvordan man uploader mere end ét billede til serveren (mysql database) ved hjælp af php og android