title: Model.ManyToManyField.all() gives AttributeError: 'ManyToManyDescriptor' object has no attribute 'all'
body: <p>I'm using Django 2.0.2, Python 3.6.4 and PyCharm 2017.3.3</p>
  
  <p>Models: (in models.py)</p>
  
  <pre><code>class Position(models.Model):
      title = models.CharField(max_length=50)
      gang = models.ForeignKey(Gang, on_delete=models.CASCADE)
      description = models.TextField(max_length=20000)
  
      def __str__(self):
          return str(self.title) + ', ' + str(self.gang)
  
  class Application(models.Model):
      positions = models.ManyToManyField(Position)
      applicant = models.ForeignKey(User, on_delete=models.CASCADE)
  
  class Ranking(models.Model):
      position = models.ForeignKey(Position, on_delete=models.CASCADE)
      applicant = models.ForeignKey(User, on_delete=models.CASCADE)
      rank = models.IntegerField(default=3,validators=[
              MaxValueValidator(3),
              MinValueValidator(1)
          ])
  </code></pre>
  
  <p>Form: (in forms.py)</p>
  
  <pre><code>class RankingForm(forms.ModelForm):
      rank = forms.IntegerField(max_value=3, min_value=1)
      position = forms.ModelMultipleChoiceField(queryset=Application.positions.all())
  
      class Meta:
          model = Ranking
          exclude = ['applicant']
          fields = ('rank', 'position')
  
      def __init__(self, *args, **kwargs):
          super(RankingForm, self).__init__(*args, **kwargs)
          self.fields['rank'].widget.attrs.update({'class': 'form-control'})
  </code></pre>
  
  <p>I keep getting the AttributeError in RankingForm from</p>
  
  <p>"position = forms.ModelMultipleChoiceField(queryset=Application.positions.all())"</p>
  
  <p>When i write</p>
  
  <pre><code>class Application(models.Model):
      ... 
  
      def __str__(self):
          return str(self.positions.all())
  </code></pre>
  
  <p>it shows in django-admin as a QuerySet (which works for forms.ModelMultipleChoiceField()), but writing</p>
  
  <pre><code>    class Application(models.Model):
      ... 
  
      def __str__(self):
          return str(Application.positions.all())
  </code></pre>
  
  <p>gives me the same error: 'ManyToManyDescriptor' object has no attribute 'all'</p>
  
  <p>Writing</p>
  
  <pre><code>    class RankingForm(forms.ModelForm):
          ...
          position = forms.ModelMultipleChoiceField(queryset=Position.objects.all())
  </code></pre>
  
  <p>works, but this is not what i want the field to display.</p>
  
  <p>I want to make a ModelMultipleChoiceField() with all the  positions from a specific application, but this error keeps getting in the way. It seems that just referencing a model doesn't work, but referencing self does?? Any help is greatly appreciated! :)</p>
  
  <p>Btw, I haven't found any good documentation on this problem, but <a href="https://github.com/django/django/blob/master/django/db/models/fields/related_descriptors.py/%22here%22" rel="nofollow noreferrer">this</a> seems to be the code for related_descriptors.py where ManyToManyDescriptor is located</p>