我有一个应用程序,它使用Django UserProfile来扩展内置的Django User模型.看起来有点像:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
# Local Stuff
image_url_s = models.CharField(max_length=128, blank=True)
image_url_m = models.CharField(max_length=128, blank=True)
# Admin
class Admin: pass
Run Code Online (Sandbox Code Playgroud)
我在我的模型中添加了一个新类:
class Team(models.Model):
name = models.CharField(max_length=128)
manager = models.ForeignKey(User, related_name='manager')
members = models.ManyToManyField(User, blank=True)
Run Code Online (Sandbox Code Playgroud)
它已注册到管理员:
class TeamAdmin(admin.ModelAdmin):
list_display = ('name', 'manager')
admin.site.register(Team, TeamAdmin)
Run Code Online (Sandbox Code Playgroud)
唉,在管理界面中,当我从下拉框中选择管理员,或通过多选字段设置团队成员时,他们按用户数字ID排序.对于我的生活,我无法弄清楚如何对这些进行排序.
我有一个类似的课:
class Meta:
ordering = ['name']
Run Code Online (Sandbox Code Playgroud)
这很棒!但我并不"拥有"这个User课程,当我尝试这个技巧时UserAdmin:
class Meta:
ordering = ['username']
Run Code Online (Sandbox Code Playgroud)
我明白了:
django.core.management.base.CommandError: One or more models did not validate:
events.userprofile: "ordering" refers to …