2024-03-28 11:46:26 发布
网友
我在特定视图中有一个queryset:
queryset
class SomeView(View) def get(self, request, *args, **kwargs): objs = SomeModel.objects.all()
现在我希望它以带有复选框的objs形式显示出来
objs
而且queryset可能并不总是SomeModel.objects.all()。它可能会根据请求在视图中更改
SomeModel.objects.all()
实现这一目标的最佳方式是什么
这就是modelmultipechoicefield所做的。您可以将其与CheckboxSelectMultiple小部件结合使用,以获得所需内容
class MyForm(forms.Form): my_choices = forms.ModelMultipleChoiceField( queryset=SomeModel.objects.all(), widget=forms.CheckboxSelectMultiple)
编辑
要根据值更改查询集,需要重写__init__:
__init__
def __init__(self, *args, **kwargs): model_value = kwargs.pop('my_value', None) super(MyForm, self).__init__(*args, **kwargs) if model_value is not None: self.fields['my_choices'].queryset = SomeModel.objects.filter(my_field=my_value)
这就是modelmultipechoicefield所做的。您可以将其与CheckboxSelectMultiple小部件结合使用,以获得所需内容
编辑
要根据值更改查询集,需要重写
__init__
:相关问题 更多 >
编程相关推荐