title: How to set a dynamic choices tuple based on other model field values
body: <p>I have a model with 2 fields:</p>
  
  <ul>
  <li>A <code>ManyToMany</code> field that contains a number of users who can approve a task (<code>approvers</code>); and</li>
  <li>An <code>IntegerField</code> that contains a choices tuple to return the current step of the task (<code>step</code>).</li>
  </ul>
  
  <pre><code>    class Task(models.Model):
          approvers = models.ManyToManyField(
              get_user_model(),
              through='TaskStep'
          )
          step = IntegerField(
              choices=STEP_CHOICES
          )
  </code></pre>
  
  <p>I want to allow users to define the number of approvers, but also dynamically create a choice for each <code>approver</code> in <code>step</code>.</p>
  
  <p>How can I programmatically define the choices in my tuple to cover the number of users in the ManyToMany field?</p>
  
  <p>For example, if there are 3 approvers, the result would be:</p>
  
  <pre><code>    STATUS_CHOICES = (
          (1, 'Step 1'),
          (2, 'Step 2'),
          (3, 'Step 3'),
      )
  </code></pre>
  
  <p>If there were 5 users, the result would be:</p>
  
  <pre><code>    STATUS_CHOICES = (
          (1, 'Step 1'),
          (2, 'Step 2'),
          (3, 'Step 3'),
          (4, 'Step 4'),
          (5, 'Step 5'),
      )
  </code></pre>