title: Django passing arguments through save methods (models)
body: <p>i have models in django like this:  </p>
  
  <pre><code>class Client(models.Model):
      type = (choices)
  
  class Bill(models.Model):
      client = models.ForeignKey(Client)
  
  class Detail(models.Model):
      total = models.MoneyField() # i used currency package
      bill = models.ForeignKey(Bill)
  </code></pre>
  
  <p>Detail class contains sales detail for the Bill, i already made a transaction to save bill and details at the same time in Bill.save() method but i want to pass Client.type from Bill.save() to Detail.Save(), i want something like that</p>
  
  <pre><code>def save(self, *args, **kwargs): #this is Bill save method
      client = self.Client
      transaction.atomic:
          super(Bill, self).save(*args, **kwargs)
          for detail in self.details
              detail.save(client)
  
  def save(self, *args, **kwargs): #this is Detail save method
      self.pricing(client)
      super(Detail, self).save(*args, **kwargs)
  
  def pricing(self, client):
      if client.type = 'value1':
          self.total = self.total - (self.total*5/100)
      elif client.type = 'value2':
          self.total = self.total - (self.total*7/100)
      else:
          self.total = self.total - (self.total*10/100)
  </code></pre>
  
  <p>i don't know how passing arguments works on python and Django, what is the cleanest solution to solve this problem? in short i want the bill.save method to pick the client.type value and passe it through detail.save to calculate total with cases.</p>
  
  <p>Thanks</p>