Django外键返回对象的多选
假设我想要一个输入表单,其中一个输入是基于另一个表的多重选择。因此,我有以下代码:Django外键返回对象的多选,django,django-forms,django-templates,Django,Django Forms,Django Templates,假设我想要一个输入表单,其中一个输入是基于另一个表的多重选择。因此,我有以下代码: # forms.py class AddItemForm(ModelForm): class Meta: model = mpItem exclude = ('date_created', 'created_by_user', ) 以及以下观点: def add_item_view(request
# forms.py
class AddItemForm(ModelForm):
class Meta:
model = mpItem
exclude = ('date_created',
'created_by_user',
)
以及以下观点:
def add_item_view(request, template_name='data/add_item.html', current_app=None):
if request.method == 'POST':
form = AddItemForm(request.POST, request.FILES)
if form.is_valid():
item = form.save(False)
item.created_by_user = request.user
item.save()
return HttpResponseRedirect('../item/'+str(item.id))
else:
form = AddItemForm()
form.fields["mptype"].queryset = mpType.objects.all()
return render_to_response(template_name,context_instance=RequestContext(request,{'form':form})
)
以及模板:
<form enctype="multipart/form-data" method="post" action=".">
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.title.errors }}
<label for="id_title" class="second">Title</label>
{{ form.title }}
</div>
<div class="fieldWrapper">
{{ form.mptype.errors }}
<label for="id_mptype" class="second">Type</label>
{{ form.mptype }}
<p>
<span> Your item does not fit in any collection? Create a <a href="{% url addcollection %}">new one</a>.</span>
</p>
</div>
<div class="fieldWrapper">
{{ form.image.errors }}
<label for="id_image" class="second">Image</label>
{{ form.image }}
</div>
<div class="fieldWrapper">
{{ form.description.errors }}
<label for="id_description" class="second">Description</label>
{{ form.description }}
</div>
{{form.non_field_errors}}
{{form.title.errors}}
标题
{{form.title}}
{{form.mptype.errors}
类型
{{form.mptype}
您的物品不适合任何收藏?创建一个。
{{form.image.errors}
形象
{{form.image}
{{form.description.errors}}
描述
{{form.description}}
但是,当呈现模板时,我得到了一个不知道如何解压缩的对象列表(对象mpType1,对象mpType2)。理想情况下,我希望选择字段是这些对象的“标题”字段,它们的值是它们的id。我错过了什么 如果我正确理解您的要求(您希望自定义对象在选择框中的显示方式),则只需将
\uuuuuunicode\uuuuu
方法添加到mpType模型中,如:
def __unicode__(self):
return self.title
这样Django就知道了您希望这些项目的显示方式。如果我正确理解了您的要求(您希望自定义对象在选择框中的显示方式),则只需向mpType模型添加一个
\uuuUnicode\ucode>方法,如:
def __unicode__(self):
return self.title
让Django知道您希望如何显示这些项目