表单ModelChoiceField查询集额外选择字段django表单

表单ModelChoiceField查询集额外选择字段django表单,第1张

概述我正在尝试创建一个表单,ModelChoiceField从queryset加载,我想为ModelChoiceField添加一些自定义值,我已经使用了选择字段,如下所示,但在更新表单时,得到以下错误 表格错误: 选择一个有效的选择.这种选择不是可用的选择之一. 代码: self.fields['lead'] = forms.ModelChoiceField(queryset = Pepole.obj 我正在尝试创建一个表单,ModelChoiceFIEld从queryset加载,我想为ModelChoiceFIEld添加一些自定义值,我已经使用了选择字段,如下所示,但在更新表单时,得到以下错误

表格错误:
选择一个有效的选择.这种选择不是可用的选择之一.

代码:

self.fIElds['lead'] = forms.ModelChoiceFIEld(queryset = Pepole.objects.filter(poc__in       = ('lead','sr.lead'))) self.fIElds['lead2'] = forms.ModelChoiceFIEld(queryset = Pepole.objects.filter(role__in = ('lead','sr.lead')))      choice_fIEld = self.fIElds['lead']                                          choice_fIEld.choices = List(choice_fIEld.choices) + [('None','None')]      choice_fIEld = self.fIElds['lead2']                                          choice_fIEld.choices = List(choice_fIEld.choices) + [('None','None')]

我在这做错了吗?

解决方法 那不行.看看ModelChoiceFIEld的工作原理:
try:        key = self.to_fIEld_name or 'pk'        value = self.queryset.get(**{key: value})    except self.queryset.model.DoesNotExist:        raise ValIDationError(self.error_messages['invalID_choice'])    return value

您无法随机添加内容.

请改用ChoiceFIEld并自定义处理数据.

class TestForm(forms.Form):    mychoicefIEld = forms.ChoiceFIEld(choices=QS_CHOICES)    def __init__(self,*args,**kwargs):        super(TestForm,self).__init__(*args,**kwargs)        self.fIElds['mychoicefIEld'].choices = \            List(self.fIElds['mychoicefIEld'].choices) + [('new stuff','new')]    def clean_mychoicefIEld(self):        data = self.cleaned_data.get('mychoicefIEld')        if data in QS_CHOICES:            try:                data = MyModel.objects.get(ID=data)            except MyModel.DoesNotExist:                raise forms.ValIDationError('foo')        return data
总结

以上是内存溢出为你收集整理的表单ModelChoiceField查询集额外选择字段django表单全部内容,希望文章能够帮你解决表单ModelChoiceField查询集额外选择字段django表单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1137352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存