2015-05-03 2 views
0

В моей admin.ModelAdmin я добавил способ, чтобы получить описание из другой таблицы:Django администратора пользовательских столбцы формат данные

def get_nome_cli(self, obj): 
     codice_cli = obj.cli_codice 
     try: 
      description= Cli.objects.filter(codice=codice_cli) 
     except: 
      nome='not found'  
     return '<a>{}></a>'.format(description) 

Он работает, но она отображает данные, как это:

<a>[<Cli: gigilatrottola - 2>]></a> 

что мне не хватает, чтобы его смотреть, как это:

<a> gigilatrottola - 2 </a> 

ответ

0

Учитывая, что только один Cli объект может быть отфильтрован для каждого codice_cli, вы можете реорганизовывать ваш код для использования метода запроса get(). Во-вторых, метод filter() не вызывает исключения, если результатом является пустой список, поэтому блок try/except бесполезен в этом случае.

def get_nome_cli(self, obj): 
    codice_cli = obj.cli_codice 
    try: 
     description = Cli.objects.get(codice=codice_cli) 
    except Cli.DoesNotExist: 
     return 'Cli not found'  
    return '<a>{}></a>'.format(description) 
get_nome_cli.allow_tags = True 

Вы должны установить allow_tags свойство True, если вы хотели бы иметь интерактивные ссылки в полях.

Не забудьте добавить к вашей модели метод __unicode__() или __str__(), в зависимости от вашего вкуса python, который предложит правильное представление, которое вы ищете.

class Cli(models.Model): 
    # ..... 
    def __unicode__(self): 
     return "%s - %s" % (self.description, self.pk) 
0

Дайте имя поля вместо объекта непосредственно.

как:. описание (имя поля)

Предположим, ваше имя поля дез тогда

return '<a>%s - %s</a>', %(description.des, desctiprion.id) 
Смежные вопросы