title: Django change __str__ depends on a field
body: <p>I need to show a description in the field that depends on the &quot;TYPE&quot; in another field and look for an ID that is at the top level.
  Exemple:
  3 types of accounts:
  P - TOP LEVL
  S - Syntetic
  A - Analitic</p>
  <p>Should show a dropdown just &quot;A&quot; and descriprion with up level of that.</p>
  <p>P: 1. Main<br />
  S: 1.1 - base 1<br />
  A: <strong>1.1.1 - value 1 - base 1</strong><br />
  A: <strong>1.1.2 - value 2 - base 1</strong><br />
  S: 1.2 - base 2<br />
  A: <strong>1.2.1 - value 1 - base - 2</strong></p>
  <p>My model and data:</p>
  <pre><code>class Plano_Conta(models.Model):
      id = models.CharField(max_length=12, primary_key=True)
      descricao = models.CharField(max_length=100)
      tipo = models.CharField(max_length=1, choices=TIPO_CONTA)
  
      def __str__(self):
          return self.id + ' - ' + self.descricao
  
      class Meta:
          ordering = ('id',)
  
  
  class Lancamento(models.Model):
      user = models.ForeignKey(User, on_delete=models.CASCADE)
      plano_conta = models.ForeignKey(Plano_Conta, on_delete=models.CASCADE)
      no_documento = models.CharField(max_length=100)
      data = models.DateTimeField()
      descricao = models.CharField(max_length=100)
      valor = models.DecimalField(max_digits=7, decimal_places=2)
      tipo = models.CharField(max_length=1, choices=TIPO_OPERACAO)
  
      def __str__(self):
          return self.descricao
  
      class Meta:
          ordering = ('data',)
  </code></pre>
  <p><em><strong>database:</strong></em></p>
  <pre><code>id   |descricao              |tipo|
  -----+-----------------------+----+
  1    |Receita                |P   |
  1.1  |Vendas Internas        |S   |
  1.1.1|Escola                 |A   |
  1.1.2|Escritório             |A   |
  1.2  |Vendas Externas        |S   |
  1.2.1|Livro                  |A   |
  1.2.2|Brinquedos             |A   |
  2    |Despesas               |P   |
  2.1  |Fornecedores           |S   |
  2.1.1|Nacional               |A   |
  2.1.2|Importado              |A   |
  2.2  |Escritório             |S   |
  2.2.1|Materiais de limpeza   |A   |
  2.2.2|Materiais de Escritório|A   |
  </code></pre>
  <p>My Admin:</p>
  <pre><code>@admin.register(Lancamento)
  class LancamentoAdmin(admin.ModelAdmin):
      list_display = ('data', 'plano_conta', 'no_documento', 'descricao', 'valor', 'tipo', 'user')
      list_filter = ('data', 'plano_conta', 'no_documento', 'descricao', 'valor', 'tipo', 'user')
      search_fields = ('data', 'plano_conta', 'no_documento', 'descricao', 'valor', 'tipo', 'user')
  
      def formfield_for_foreignkey(self, db_field, request, **kwargs):
          if db_field.name == &quot;plano_conta&quot;:
              kwargs[&quot;queryset&quot;] = Plano_Conta.objects.filter(tipo__in=['A'])
          return super().formfield_for_foreignkey(db_field, request, **kwargs)
          
  @admin.register(Plano_Conta)
  class Plano_ContaAdmin(admin.ModelAdmin):
      list_display = ('id', 'descricao','tipo')
      list_filter = ('id', 'descricao', 'tipo')
      search_fields = ('id', 'descricao', 'tipo')
  </code></pre>
  <p>I managed to do this!</p>
  <p>1.1.1 - Escola<br />
  1.1.2 - Escritorio<br />
  1.2.1 - Livro
  1.2.2 - Brinquedos<br />
  2.1.1 - Nacional
  2.1.2 - Importado<br />
  2.2.1 - Materiais de limpeza<br />
  2.2.2 - Materiais de Escritório</p>
  <p>I would like it that way! :)</p>
  <p>1.1.1 - Escola - <strong>Vendas internas</strong><br />
  1.1.2 - Escritorio - <strong>Vendas Internas</strong><br />
  1.2.1 - Livro - <strong>Vendas Externas</strong><br />
  1.2.2 - Brinquedos - <strong>Vendas Externas</strong><br />
  2.1.1 - Nacional - <strong>Fornecedores</strong><br />
  2.1.2 - Importado - <strong>Fornecedores</strong><br />
  2.2.1 - Materiais de limpeza - <strong>Escritório</strong><br />
  2.2.2 - Materiais de Escritório - <strong>Escritório</strong></p>
  <p>I don't know if I was able to explain correctly!</p>
  <p>Thanks!!!</p>