在 Django Admin FilteredSelectmultiple 小部件中预填充选定值

Pre-populating Selected Values in Django Admin FilteredSelectmultiple Widget

我希望能够在 Django Admin FilteredSelectMultiple 小部件的右侧设置一些默认 selected 用户。

这是我的模型:

class UserAdminForm(forms.ModelForm):
    users = forms.ModelMultipleChoiceField(
        queryset=User.objects.all(),
        widget=FilteredSelectMultiple("Users",
                                      is_stacked=False))

    class Meta:
        model = User
        exclude = ()

有没有办法用 JavaScript 来做到这一点,这样我就不必在每次创建新项目时都手动 select 这些默认值?

您可以通过设置 initial=… parameter [Django-doc] 来指定初始数据:

class UserAdminForm(forms.ModelForm):
    users = forms.ModelMultipleChoiceField(
        queryset=User.objects.all(),
        <strong>initial=User.objects.filter(username__in=['johnsmith', 'janedoe'])</strong>,
        widget=FilteredSelectMultiple('Users', is_stacked=False)
    )

    class Meta:
        model = User
        fields = '__all__'

这里我们设置为初始选择的用户johnsmithjanedoe。您当然可以选择其他用户。