title: How to set hierarchy on Django objects of the same class?
body: <p>I'm working on a web for translators in Django. Each translator can speak different languages on different levels. So translator 1 can speak English on level 'professional', translator 2 can speak English on level 'native'. </p>
  
  <p>There are four different <code>Levels</code>. (Level is a model)</p>
  
  <pre><code>class Level(models.Model):
      LEVEL_CHOICES = (
          ('unknown', _('Unknown')),
          ('standard', _('Standard level')),
          ('professional', _('Professional level')),
          ('native', _('Native speaker level')),
      )
  
      name = models.CharField(max_length=40, choices=LEVEL_CHOICES, blank=False, null=False,
                              help_text=_('Choose a level'))
  
      def __str__(self):
          return '{}'.format(self.get_name_display())
  </code></pre>
  
  <p>And model <code>LanguageLevel</code>:</p>
  
  <pre><code>class LanguageLevel(models.Model):
      language = models.ForeignKey(Language,
                                   help_text=_('Choose a language'), related_name='language_levels')
      level = models.ForeignKey(Level,
                                help_text=_('Choose a level of the language'))
      price_multiplier = models.FloatField(default=0.0,
                                           help_text=_('Type a price multiplier'))
  
      def __str__(self):
          return '{}: {}'.format(self.language, self.level)
  
      class Meta:
          unique_together = (('level', 'language'),)
  </code></pre>
  
  <p>Now what's the problem. The problem is that if I want to get, for example, translator speaking <code>English</code> on level 'standard', in fact, I want to get translators speaking <code>English</code> on level either 'standard', 'professional' or 'native' because those, who can speak 'native' can speak 'standard' too. </p>
  
  <p>There are many situations in my project like this so I would like to simplify this. </p>
  
  <p>So <code>unknown</code>&lt;<code>standard</code>&lt;<code>professional</code>&lt;<code>native</code>. Now if I try to get all translator speaking English on <code>standard</code> level, I want to get <code>professional</code> and <code>native</code> too. </p>
  
  <p>Could you give me advice?</p>