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

Posted

技术标签:

【中文标题】在 Django Admin FilteredSelectmultiple 小部件中预填充选定值【英文标题】:Pre-populating Selected Values in Django Admin FilteredSelectmultiple Widget 【发布时间】:2021-10-13 11:33:51 【问题描述】:

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

这是我的模型:

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

    class Meta:
        model = User
        exclude = ()

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

【问题讨论】:

你如何确定哪些项最初应该向右移动? 在大量的选项中,有一个每次都使用的通用集合。 如果你使用users = forms.ModelMultipleChoiceField(initial=User.objects.filter(username__in=['johnsmith', 'janedoe']), queryset=User.objects.all(), widget=FilteredSelectMultiple("Users", is_stacked=False))会怎样 因此将带有硬编码用户名的查询集指定为初始。 这行得通!非常感谢! 【参考方案1】:

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

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

    class Meta:
        model = User
        fields = '__all__'

因此,我们在这里将johnsmithjanedoe 设置为初始选定用户。您当然可以选择其他用户。

【讨论】:

以上是关于在 Django Admin FilteredSelectmultiple 小部件中预填充选定值的主要内容,如果未能解决你的问题,请参考以下文章

django1.6 admin不能登录

django-admin小试

django的admin界面怎么没有样式

Django Admin Cookbook-23如何在Django admin中添加嵌套的内联

Django admin后台操作

django-admin