django - 使用 CheckboxSelectMultiple 保存 Django ModelForm,不选中任何框
问题描述
如果没有选中任何框,则使用 CheckboxSelectMultiple 小部件的 Django 表单不会使用 CheckboxSelectMultiple 小部件回传任何字段。
class AlarmForm(forms.ModelForm):
class Meta:
model = models.Alarm
fields = ['phone_contacts', 'disabled']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
user = self.instance.user
self.fields["phone_contacts"].widget = forms.widgets.CheckboxSelectMultiple()
self.fields['phone_contacts'].queryset = user.phonecontact_set
如果查看表单的用户未选中任何复选框,则想法是模型的phonecontact_set
字段 ( a ManyToManyField
) 应该被清除。相反,如果没有选中任何框,则根本不会保存该字段。这显然是因为未选中的复选框在 Web 浏览器中的 POST 表单中不包含任何值。
尽管如此,似乎必须有一种方法可以让 Django 在不完全重新实现保存功能的情况下做到这一点,但我似乎找不到 Django 的方法来做到这一点..
解决方案
推荐阅读
- python - 有没有办法根据特定列的值剪辑整行?
- sql - 我需要用 ms sql 请求中的字符串格式替换值 NULL
- project-reactor - Resilience4j 速率限制器在项目反应堆中无法正常工作?
- matlab - 函数rand和randn的随机数分布
- python - 如何创建将并行接受多个请求的 HTTP Azure 函数?
- php - 仅当字段不为空时才附加逗号
- python - 使用 Django REST 框架 SearchFilter 解码(和等同)特殊字符?
- react-native - 在异步存储中存储访问令牌的安全风险
- json - ts-loader 在导入 .json 文件时在子目录中输出声明文件
- python - 将字符串列表拆分为“相似字符串”组