在 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__'
因此,我们在这里将johnsmith
和janedoe
设置为初始选定用户。您当然可以选择其他用户。
【讨论】:
以上是关于在 Django Admin FilteredSelectmultiple 小部件中预填充选定值的主要内容,如果未能解决你的问题,请参考以下文章