【问题标题】:Sorting of Users Dropdown list (ForeignKey) in Django AdminDjango Admin中用户下拉列表(外键)的排序
【发布时间】:2018-10-27 21:18:03
【问题描述】:

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

我在 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

感谢任何帮助。

【问题讨论】:

  • 好吧,user = ... 行以逗号而不是右括号结束。
  • 该字段继续 user = models.ForeignKey(User, verbose_name="xyz", null=True, blank=True, limit_choices_to={'is_active': True}, on_delete=models.PROTECT) 并以右括号结束。

标签: python django python-3.6 django-2.0


【解决方案1】:

为什么不在你的模型类中做呢

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

    class Meta:
        ordering ['user__last_name']

【讨论】:

  • 我认为这将对 MyModel 中的对象进行排序,但我想要订购的只是当我在 MyModel 的一个实例中编辑字段用户时显示在管理界面中的下拉列表。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 2012-02-18
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2011-03-05
    • 2012-07-05
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多