django – 我需要一个ModelMultipleChoiceField的“原始id”小部
发布时间:2020-12-20 13:48:41 所属栏目:Python 来源:网络整理
导读:我的一个模型有一个ManyToMany字段. 我在表单中使用ModelMultipleChoiceField和默认小部件(SelectMultiple小部件). 问题: 这个领域有大约5万个选项,需要花费很长时间才能加载. 我想将小部件更改为CharField并输入用逗号分隔的每个PK(如admin raw_id_field).
我的一个模型有一个ManyToMany字段.
我在表单中使用ModelMultipleChoiceField和默认小部件(SelectMultiple小部件). 问题: 我想将小部件更改为CharField并输入用逗号分隔的每个PK(如admin raw_id_field). 问题: 谢谢! 解决方法
如果你不需要在单独的窗口中选择项目,比如在admin中,那么编写这样的小部件非常简单.使用以下小部件,您将能够输入以逗号分隔的pks列表:
from django import forms from django.utils.encoding import force_text class ModelMultiRawInput(forms.TextInput): def render(self,name,value,attrs=None): if value: value = ','.join([force_text(v) for v in value]) else: value = '' return super(ModelMultiRawInput,self).render(name,attrs) def value_from_datadict(self,data,files,name): value = data.get(name) if value: return value.split(',') 你通常会像这样使用这个小部件: class MyForm(forms.Form): users = forms.ModelMultipleChoiceField(queryset=User.objects.all(),widget=ModelMultiRawInput) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |