在Django Admin中对用户下拉列表(ForeignKey)进行排序

时间:2018-05-17 14:40:00

标签: python django python-3.6 django-2.0

我正在使用django管理员,并希望对相关字段(ForeignKey)中的用户下拉列表进行排序(通过last_name)。

我正在使用django中的标准用户模型。我在model.py中尝试了以下功能:

...
from django.contrib.auth.models import User

class Meta:
    ordering = ['last_name']

User.add_to_class("Meta", Meta)
...
class Application(models.Model):

    ...
    user = models.ForeignKey(User,
        verbose_name="xyz", 
        null=True, blank=True, 
        limit_choices_to={'is_active': True}, 
        on_delete=models.PROTECT) 
    ...

为什么这不起作用?有另一种(简单的)方法吗?我可能应该选择自定义用户模型。但我没有做到这一点,现在改变它就是需要做很多工作。

我正在使用django 2.0.5和python 3.6.5

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

为什么不在模型类中进行

class MyModel (models.Model):
    user = models.ForeginKey(User)
    ...

    class Meta:
        ordering ['user__last_name']

答案 1 :(得分:0)

它表示用户模型中的排序被UserAdmin中指定的排序覆盖。指定我自己的UserAdmin解决了这个问题。

class MyUserAdmin(UserAdmin):
    ...
    ordering = ["last_name", "first_name"]
    ...
admin.site.register(User, MyUserAdmin)