【发布时间】:2017-06-22 20:35:48
【问题描述】:
class form(forms.ModelForm):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
u = User.objects.get(user=user)
super(form, self).__init__(*args, **kwargs)
self.fields['phone'].queryset = Phone.objects.filter(user=u)
class Meta:
model = MyModel
fields = ["name", "description", , "phone"]
此表单使用属于当前登录用户的电话预先填充现场电话。我使用 {{ form.as_p }} 获得了要显示的模板,但我不知道如何在 html 模板中手动显示带有要选择的预填充电话名称的字段。
我尝试了下面的 sn-p 作为更大表单的一部分,但它不起作用。
<select multiple="multiple" id="id_phone" name="phone" required>
{% for p in phone %}
<option value="{{ p.id }}">{{ p.name }}</option>
{% endfor %}
</select>
另外,我如何允许用户使用这种预填充方法一次选择多部手机。我尝试使用 ModelMultipleChoiceField 但它不起作用。
【问题讨论】:
-
为什么需要手动显示?这是一个什么样的领域?当您尝试使用 ModelMultipleChoiceField 时,什么“不起作用”?
-
我想手动完成,这样我就可以为每个输入和标签提供类,并能够按照我想要的方式进行设计。这是一个选择字段,它有选项,用户可以选择他们想要添加的电话。当我尝试使用 ModelMultipleChoiceField 时,我只是不知道如何从 self.fields['phone'].queryset 传入查询集