django - exclude option in selectField (ForeignKey)
问题描述
i have a user field in my model,
class result(models.Model):
id = models.AutoField(primary_key=True)
created_at = models.DateTimeField(auto_now_add=True)
doc_analis = models.BooleanField(blank=True, default=False)
user = models.ForeignKey(MyUsers, on_delete=models.SET_NULL, null=True, blank=True)
in database table "MyUsers" - 10 users.
How to exclude some of this 10 users from choise option in form (by id or name)?
form (view.py)
class ResultNew(CreateView):
model = result
fields = '__all__'
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.helper = FormHelper()
form.helper.add_input(Submit('submit', 'Create', css_class='btn-primary'))
form.fields['doc_change'].label = "Change"
form.fields['doc_analis'].label = "Analysis"
form.fields['user'].label = "Username" # FK (10 users)
return form
解决方案
您需要覆盖 Forminit
方法以从下拉列表中排除用户。我在这里假设您要排除不是的用户active
,但您可以根据您的条件排除用户。
from django import forms
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['myuser'].queryset = self.fields['myuser'].queryset.exclude(is_active=False)
推荐阅读
- python - SQLAlchemy INSERT stmt with OUTPUT 返回多行
- kubernetes - 如何使用 full-pcpus-only 选项
- shell - 在 shell 脚本中转义反斜杠需要 3 个反斜杠
- java - 如何使用 Java Streams API 添加和更新地图条目
- sql - 如何进行 GROUP BY [empty]
- c++ - 布尔语句 C++
- excel - 将多行合并到一张工作表中
- pm2 - PM2 生态系统文件 - 将时间戳写入日志
- python - 按多列条件拆分列值的 Pythonic 方法
- swift - 除非保留,否则自定义组合发布器包装类不起作用