覆盖默认的用户模型方法

时间:2009-11-30 00:11:50

标签: python django

我一直在尝试覆盖django.contrib.auth.models用户模型的默认__unicode__()方法,但我无法让它工作。

我试过这样:

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"

但它不起作用,我知道这样做是错的,但我不知道如何正确地做到这一点。

我想要它做的就是在管理面板中说“pie”而不是用户名。

编辑:

管理这样做:

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

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

我在使用ForeignKey引用时使用了MyUser类,而不是User。

1 个答案:

答案 0 :(得分:4)

你可能想看看Django的Proxy Model概念。他们甚至展示了一个使用User作为基类的例子。

另一方面,如果您尝试更改实际User类中的实际__unicode __()方法,则可能需要MonkeyPatch它。这并不困难,但我会将具体细节留给您作为学习经历。