首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >覆盖Django用户模型__unicode__

覆盖Django用户模型__unicode__
EN

Stack Overflow用户
提问于 2011-02-21 13:02:02
回答 5查看 7.4K关注 0票数 17

目前,Django 1.2.3用户模型unicode

代码语言:javascript
复制
def __unicode__(self):
    return self.username

我想要覆盖它,所以它:

代码语言:javascript
复制
def __unicode__(self):
    return u'%s, %s' % (self.last_name, self.first_name)

怎么做?

类似的效果:

代码语言:javascript
复制
User._meta.ordering = ['last_name', 'first_name']

在定义anywhere时起作用

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-21 16:45:17

如果你需要覆盖这些,很可能以后你会需要更多的定制。最干净的做法是使用user profile models,而不是接触用户模型

票数 0
EN

Stack Overflow用户

发布于 2012-04-28 05:51:55

如果你只是想在管理界面中显示全名(这正是我所需要的),你可以很容易地在运行时修补它。只需在您的admin.py中执行以下操作:

代码语言:javascript
复制
from django.contrib import admin
from django.contrib.auth.models import User

def user_unicode(self):
    return  u'%s, %s' % (self.last_name, self.first_name)

User.__unicode__ = user_unicode

admin.site.unregister(User)
admin.site.register(User)
票数 36
EN

Stack Overflow用户

发布于 2013-09-12 19:53:04

Django的代理模型解决了这个问题。

这是我的解决方案:

代码语言:javascript
复制
form.fields['students'].queryset = Student.objects.filter(id__in = school.students.all())

这里school.students是一个m2m(用户),学生是用户的代理模型。

代码语言:javascript
复制
class Student(User):
    class Meta:
        proxy = True
    def __unicode__(self):
        return 'what ever you want to return'

如果您想在您的自定义方法中显示您的用户ForeignKey,以上所有这些都可以帮助您解决问题。如果您只是想在管理视图中更改它,有一个简单的解决方案:

代码语言:javascript
复制
def my_unicode(self):
    return 'what ever you want to return'

User.__unicode__ = my_unicode

admin.site.unregister(User)
admin.site.register(User)

将这些代码添加到admin.py中,它就可以工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5062493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档