ModelMultipleChoiceField没有选择初始选择,并且在我的示例中,我无法进行以下修复
我的模型和表格:
class Company(models.Model):
company_name = models.CharField(max_length=200)
class Contact(models.Model):
company = models.ForeignKey(Company)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
class Action(models.Model):
company = models.ForeignKey(Company, blank=True, null=True)
from_company = models.ManyToManyField(Contact, verbose_name='Participant(s) from "Company"', blank=True, null=True)
class Action_Form(ModelForm):
from_company = forms.ModelMultipleChoiceField(queryset=Contact.objects.none(), widget=forms.CheckboxSelectMultiple())
class Meta:
model = Action
我的工作和结果:
>>> contacts_from_company = Contact.objects.filter(company__exact=1) # "1" for test, otherwise a variable
>>> form = Action_Form(initial={'from_company': [o.pk for o in contacts_from_company]}) # as suggested in the fix
>>> print form['from_company']
<ul>
</ul>
>>> print contacts_from_company
[<Contact: test person>, <Contact: another person>]
>>> form2 = Action_Form(initial={'from_company': contacts_from_company})
>>> print form2['from_company']
<ul>
</ul>
>>> form3 = Action_Form(initial={'from_company': Contact.objects.all()})
>>> print form3['from_company']
<ul>
</ul>
我希望它可以工作的方式:
1.我的视图从request.GET获取“公司”
2.然后过滤该“公司”的所有“联系人”
3.最后,它创建一个表单并将这些“联系人”作为“初始= {…}”
两个问题:
1. [尚未回答]如何使ModelMultipleChoiceField接受那些“初始”值?
2. [已回答]作为替代,我可以将变量传递给Action_Form(ModelForm)以便在我的ModelForm中可以有:
from_company = forms.ModelMultipleChoiceField(queryset=Contact.objects.filter(company__exact=some_id) # where some_id comes from a view
你将需要添加一个__init__
方法来Action_Form
设置初始值,记住要通过super调用__init__
基ModelForm
类。
class Action_Form(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(Action_Form, self).__init__(*args, **kwargs)
self.fields['from_company'].queryset = Contact.object.filter(...
如果你打算将过滤器参数作为关键字args传递给Action_Form
,则需要在调用super之前将其删除:
myfilter = kwargs['myfilter']
del kwargs['myfilter']
或者,可能更好:
myfilter = kwargs.pop('myfilter')
cesium每更新一个版本,就会导致默认的三维球不可见,原因是bingkey发生了变化,如果我们想设置三维球加载的初始图层,可以修改viewer的imageryProvider属性,但是这样做会导致一个问题:baseLayerPicker控件的按钮图标会显示为空白 今天我们来解决这个问题。 拿到问题不要直接开怼,想一想,应该怎么做? 首先我们知道这个控件就是一个div,那毫无疑问,使用js强制修改
以下XSLT在Stylus Studio上无缝地将输入转换为输出: 为此,我必须在Stylus Studio的场景属性/处理器部分指定要使用的初始模板值。XSLT将用于java应用程序[使用Saxon HE 9.5.1-2库的iWay Service Manager],我无法找出指定初始模板的方法。也许我可以利用一个JVM选项,但我正在Internet上查找,还没有点击。 与此同时,我试图解决将用
如果我的查询结果是带有原始值的单个列,是否有办法使用jooq获取它们,避免原始装箱? 例如,从表中的每本书中获取页数作为int[]。
问题内容: 如果我只需要2/3列,而是查询而不是在select查询中提供这些列,那么关于更多/更少I / O或内存的性能是否会有所下降? 如果我确实选择了*,则可能会出现网络开销。 但是在选择操作中,数据库引擎是否总是从磁盘中提取原子元组,还是仅提取在选择操作中请求的那些列? 如果它总是拉一个元组,则I / O开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在
我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码:
问题内容: 我正在尝试将ng-options与一起使用,以将数字整数值绑定到相应选项的列表。在我的控制器中,我有类似以下内容: HTML: 这是一个演示问题的jsFiddle,以及我已经采取但不满意的其他一些方法。 选择选项正在用一个空值初始化,而不是本例中预期的“ mV”。如果选择其他选项,则绑定似乎可以正常工作-selectedUnitOrdinal会正确更新。 我注意到,如果将初始模型值设置