从querys构造表单

2024-03-28 11:46:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我在特定视图中有一个queryset

class SomeView(View)
    def get(self, request, *args, **kwargs):
        objs = SomeModel.objects.all()

现在我希望它以带有复选框的objs形式显示出来

而且queryset可能并不总是SomeModel.objects.all()。它可能会根据请求在视图中更改

实现这一目标的最佳方式是什么


Tags: selfview视图getobjectsrequestdefargs
1条回答
网友
1楼 · 发布于 2024-03-28 11:46:26

这就是modelmultipechoicefield所做的。您可以将其与CheckboxSelectMultiple小部件结合使用,以获得所需内容

class MyForm(forms.Form):
    my_choices = forms.ModelMultipleChoiceField(
                      queryset=SomeModel.objects.all(),
                      widget=forms.CheckboxSelectMultiple)

编辑

要根据值更改查询集,需要重写__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)

相关问题 更多 >