2013-02-22 2 views
12

Я новичок в Django и имею модель приложения и модель среды. Окружающая среда имеет приложение как дополнительный ключ. Я знаю, что мне нужно написать unicode() для читаемого человеком представления модели, но есть ли способ получить атрибут от объекта foreignkey для отображения в виде строки?django - модель unicode() show foreignkey object attribute

class Application(models.Model): 
    app_id = models.IntegerField(primary_key=True) 
    app_name = models.CharField(max_length=200) 
    app_description = models.CharField(max_length=2000, blank=True) 

    def __unicode__(self): 
     return self.app_name 

class Environment(models.Model): 
    app_id = models.ForeignKey(Application, db_column='app_id') 
    environ_id = models.IntegerField(max_length=6) 
    environ_name = models.CharField(max_length=200) 

    def __unicode__(self): 
     return '%s %s' % (application__app_name, self.environ_name) 

Я хочу, чтобы модель окружения была представлена ​​как «имя_имя_имя_имя_и_и_и_и_у_».

Обновление: Причина, по которой я хочу отобразить модель среды как «имя_пользователя», чтобы она стала понятной пользователю при вводе данных на страницах администратора. Например, app_name будет «NavSystem», а имя среды будет «DEV1», поэтому наличие модели среды, представленной как «NavSystem DEV1», более полезна, чем просто «DEV1».

ответ

13

Вы можете, ссылаясь на атрибут, используя синтаксис «точка». Вот что вы хотите:

def __unicode__(self): 
    return '%s %s' % (self.app_id.app_name, self.environ_name)  
+0

Удивительно, это именно то, что мне нужно. Благодаря! – MD6380

+1

Если я использую «точечный синтаксис» для доступа к внешнему объекту Key, я получаю: объект «NoneType» не имеет атрибута «name». Я использую себя. . . Атрибут «name» существует. – Timo

Смежные вопросы