Изменение собственного отображения пользователя в Django - PullRequest
0 голосов
/ 05 мая 2011

Я бы хотел видеть user.email вместо user.username при вызове print (user). Это означает, что в моем админе я хотел бы видеть электронные письма как внешние ключи.

Обычно я делал бы это следующим образом, как описано в django tutorial :

class Poll(models.Model):
# ...
def __unicode__(self):
    return self.question

Тем не менее, пользовательский класс написан заранее, и я не хочу модифицировать Django. Как мне тогда действовать?

UPDATE: Я добавил в свою модель следующее:

def email(self):
    u = User.object.get(pk=self.user.id)
    return u.email

Как мне теперь связать его с моим list_display?

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Вы можете определить метод в вашем классе Poll с именем 'get_username' или чем-то еще, который возвращает адрес электронной почты пользователя вместо его фактического имени пользователя.Затем передайте «get_username» в качестве параметра для вашего атрибута «list_display» в ModelAdmin вашего класса Poll.

0 голосов
/ 05 мая 2011

Определяемый вами вариант использования требует переопределения метода User.__unicode__.

Из документации django на list_display :

Если поле является ForeignKey, Django отобразит __unicode__() связанного объекта.

Я не вижу никакого способа обойти это.

...