【问题标题】:Filter queryset in django select2 widget在 django select2 小部件中过滤查询集
【发布时间】:2022-08-09 18:09:34
【问题描述】:

是否可以在 Django Select2 表单中过滤查询集?

我有一个向用户发送直接消息的表单,我希望能够过滤用户。

s2forms.ModelSelect2Widget,如我所见,选择用户模型的所有实例

现在我需要为用户模型(allow_direct_messages)实现一个标志,如果用户允许发送直接消息,那么我需要相应地过滤它们。

class DirectMessageCreateForm(forms.ModelForm):
class Meta:
    model = DirectMessage
    fields = (\"author\", \"recipient\", \"content\")
    labels = {
        \"author\": \"\",
    }
    widgets = {
        \"recipient\": UsersWidget,
        \"content\": forms.Textarea(attrs={
            \'class\': \'block p-3 w-full text-md bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500\'
                     \' focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 \'
                     \'dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\',
            \'placeholder\': \"Type your message here...\"
        }),
        \"author\": forms.TextInput,
    }



class UsersWidget(s2forms.ModelSelect2Widget):
search_fields = [
    \"name__icontains\",
    \"email__icontains\",
]

也许有人知道如何在里面制作一个自定义查询集ModelSelect2Widget形式?

提前致谢

    标签: django django-models django-views django-forms django-select2


    【解决方案1】:

    我找到了解决方案 希望它会帮助某人

    不要害怕设置一个查询集类中的属性:

    class UsersWidget(s2forms.ModelSelect2Widget):
    *queryset = User.objects.exclude(profile__allow_direct_messages=False)*
    search_fields = [
        "name__icontains",
        "email__icontains",
    ]
    

    这应该工作!

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2020-08-22
      • 2019-04-15
      • 2011-09-29
      • 2011-02-04
      • 2011-06-11
      相关资源
      最近更新 更多