PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để ngăn chặn tình trạng chủng tộc trong Django khi CHÈN với giới hạn SUM?

Cảm ơn @Alasdair đã chỉ cho tôi đúng hướng.

Sau khi điền vào các trường của inst (một Expense mới ), làm:

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()

Lưu ý rằng tôi có total_cost được định nghĩa như một phương thức trên Project :

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao tôi không thể loại trừ các cột phụ thuộc khỏi `GROUP BY` khi tôi tổng hợp theo một khóa?

  2. Thiết kế cơ sở dữ liệu tạm thời, có sự thay đổi (hàng trực tiếp so với hàng nháp)

  3. Sử dụng pg_dump để chỉ nhận các câu lệnh chèn từ một bảng trong cơ sở dữ liệu

  4. Làm cách nào để ghép hai từ cuối cùng trong một câu trong PostgreSQL?

  5. Sắp xếp phân biệt chữ hoa chữ và số trong các bưu điện