title: update django models column based on other column
body: <p>I have a model like</p>
  <pre><code>class tbl_payment(models.Model):
      document_id                     = models.ForeignKey(tbl_invoice, on_delete=models.CASCADE)
      client_id                       = models.ForeignKey(tbl_customer, on_delete=models.CASCADE)
      total_amount                    = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
      paid_amount                     = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
      balance                         = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
      date                            = models.DateField(blank=True, null=True)
      status                          = models.CharField(max_length=50)
  </code></pre>
  <p>Now what I want to do is whenever a new record is added, or an existing record changes, <code>balance</code> should be updated as the difference between <code>total_amount</code> and <code>paid_amount</code> (simple maths), and based on my <code>balance</code> column, I want to save <code>status</code> as <strong>Paid</strong>, <strong>Partial</strong> or <strong>Unpaid</strong>.</p>
  <p>I want to refrain from calculating the <code>balance</code> in my views and then saving in the database, instead, I want to handover this part to my models so that my models take care of the <code>balance</code> and I may avoid errors which I am subconsciously afraid of.</p>
  <p>I came to know that this is done something like this</p>
  <pre><code>class tbl_payment(models.Model):
      document_id                     = models.ForeignKey(tbl_invoice, on_delete=models.CASCADE)
      client_id                       = models.ForeignKey(tbl_customer, on_delete=models.CASCADE)
      total_amount                    = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
      paid_amount                     = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
      balance                         = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
      date                            = models.DateField(blank=True, null=True)
      status                          = models.CharField(max_length=50)
  
      @property
      def balance(self, value):
          return self.total_amount - paid_amount
          
  </code></pre>
  <p>but what should I pass in place of <code>value</code>??
  also when I try to get <code>due_amount</code> value like this</p>
  <pre><code>tbl_bulk_payment.objects.get(pk=1).due_amount
  </code></pre>
  <p>it gives <code>due_amount() missing 1 required positional argument: 'value'</code></p>
  <p>what is the correct way of doing this??</p>