无法在 Django 中对用户 ForeignKey 进行排序

Unable to sort a user ForeignKey in Django

所以我基本上有一个 Django 表单来更改项目的所有权,但用户以非字母顺序出现,而且目前还无法控制。

class myModel(models.Model):
    owner = models.ForeignKey(User, null=True, blank=True)

因为我使用的是内置模型,所以我一辈子都想不出如何在调用下面的表单时让 "owner" 字段按用户名排序。

class OwnerChange(ModelForm):
    required_css_class = 'required'
    class Meta:
        model = myModel
        fields = ['owner']

在您的模型表单中可以轻松覆盖查询集。

class OwnerChange(forms.ModelForm):
    required_css_class = 'required'

    ## Update the queryset to order by username 
    owner = forms.ModelChoiceField(queryset=User.objects.order_by('username'))

    class Meta:
        model = Cluster
        fields = ['owner']

不要忘记将导入更新为

from django import forms

您可以使用另一个选项来不更新所有表单。但是,如果您不想按用户名

对所有查询集中模型中的所有实例进行排序,则上述示例很有用
class myModel(models.Model):
    owner = models.ForeignKey(User, null=True, blank=True)

    class Meta:
        ordering = ['owner__username']