PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एसयूएम सीमित करने के साथ INSERT पर Django में दौड़ की स्थिति को कैसे रोकें?

मुझे सही दिशा में इंगित करने के लिए @Alasdair को धन्यवाद।

inst . की फ़ील्ड भरने के बाद (एक नया Expense ), करो:

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

ध्यान दें कि मेरे पास total_cost है 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. स्टेटमेंट की तुलना में तैयार किए गए स्टेटमेंट के साथ क्वेरी बहुत धीमी है

  2. PostgreSQL में समय क्षेत्र के साथ/बिना टाइमस्टैम्प के बीच अंतर

  3. PostgreSQL में रेल टाइमज़ोन नामों को कैसे मैप करें?

  4. मैं Postgres 9.4 JSONB कॉलम में केस-असंवेदनशील खोज कैसे करूँ?

  5. बूलियन फ़ील्ड पर एक इंडेक्स जोड़ना