我一直在尝试覆盖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。
答案 0 :(得分:4)
你可能想看看Django的Proxy Model概念。他们甚至展示了一个使用User作为基类的例子。
另一方面,如果您尝试更改实际User类中的实际__unicode __()方法,则可能需要MonkeyPatch它。这并不困难,但我会将具体细节留给您作为学习经历。