目前,Django 1.2.3用户模型unicode是
def __unicode__(self):
return self.username
我想要覆盖它,所以它:
def __unicode__(self):
return u'%s, %s' % (self.last_name, self.first_name)
怎么做?
类似的效果:
User._meta.ordering = ['last_name', 'first_name']
在定义anywhere
时起作用
发布于 2011-02-21 16:45:17
如果你需要覆盖这些,很可能以后你会需要更多的定制。最干净的做法是使用user profile models,而不是接触用户模型
发布于 2012-04-28 05:51:55
如果你只是想在管理界面中显示全名(这正是我所需要的),你可以很容易地在运行时修补它。只需在您的admin.py中执行以下操作:
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)
发布于 2013-09-12 19:53:04
Django的代理模型解决了这个问题。
这是我的解决方案:
form.fields['students'].queryset = Student.objects.filter(id__in = school.students.all())
这里school.students是一个m2m(用户),学生是用户的代理模型。
class Student(User):
class Meta:
proxy = True
def __unicode__(self):
return 'what ever you want to return'
如果您想在您的自定义方法中显示您的用户ForeignKey,以上所有这些都可以帮助您解决问题。如果您只是想在管理视图中更改它,有一个简单的解决方案:
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中,它就可以工作。
https://stackoverflow.com/questions/5062493
复制相似问题