Переопределить метод модели пользователя по умолчанию - PullRequest
3 голосов
/ 30 ноября 2009

Я пытался переопределить метод __unicode__() по умолчанию для пользовательской модели django.contrib.auth.models, но я не могу заставить его работать.

Я попробовал это так:

from django.db import models
from django.contrib.auth.models import User

class User(models.Model):
        def __unicode__(self):
            return "pie"

и

from django.db import models
from django.contrib.auth.models import User

class User(User):
        def __unicode__(self):
            return "pie"

но это не работает, я знаю, что это неправильно, но я понятия не имею, как это сделать правильно.

Все, что я хочу, это сказать «пирог» вместо имени пользователя в панели администратора.

редактирование:

Удалось сделать это так:

class MyUser(User):
    class Meta:
        proxy = True

    def __unicode__(self):
        if self.get_full_name() == '':
            return "pie"
        else:
            return self.get_full_name()

Я использовал класс MyUser при создании ссылок на ForeignKey вместо User.

1 Ответ

4 голосов
/ 30 ноября 2009

Возможно, вы захотите взглянуть на концепцию Django Proxy Model . Они даже показывают пример использования User в качестве базового класса.

С другой стороны, если вы пытаетесь изменить фактический метод __unicode __ () в фактическом классе User, вам, вероятно, придется MonkeyPatch его. Это не сложно, но я оставлю эту специфику как опыт обучения для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...