【问题标题】:Django multiple choice of foreign key returning objectsDjango 多选外键返回对象
【发布时间】:2011-10-04 21:51:38
【问题描述】:

假设我想要一个输入表单,其中一个输入是基于另一个表的多项选择。所以我有以下代码:

# 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>

但是,当模板被渲染时,我得到了一个我不知道如何解包的对象列表(对象 mpType1,对象 mpType2)。理想情况下,我希望选择字段成为这些对象的“标题”字段,并将它们的值作为它们的 id。我在这里想念什么?

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    如果我理解您的要求正确(您想自定义对象在选择框中的显示方式),您需要做的就是向 mpType 模型添加一个 __unicode__ 方法,例如:

    def __unicode__(self):
        return self.title 
    

    以便 Django 知道您希望如何显示这些项目。

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 2011-03-06
      • 2018-01-28
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      相关资源
      最近更新 更多