Django:将ModelChoiceField与MongoEngine一起使用时出错

时间:2015-05-24 18:53:22

标签: python django mongodb mongoengine

我必须使用Django开发一个Web界面,我尝试在HTML中显示一个选择列表,其中填充了从MongoDB查询中获取的值,但我遇到了一些问题。我正在使用MongoEngine。 我的forms.py看起来像这样:

class top_hashtags(forms.Form):
    top_hashtags_collection = forms.ModelChoiceField(queryset=Collections.objects.all(), required=True)

在views.py中我这样做:

def index(request):
    form = top_hashtags()
    return render(request, 'index.html', {'user':1, 'top_hashtags_form': form}, context_instance=RequestContext(request))

然后,在index.html中我尝试了选项:

  • 如果我使用{{ top_hashtags.as_p }},我会收到一个Collections对象列表。如果我点击提交,表单不会通过验证。
  • 如果我使用这样的东西:



<td>
  <ul>
    {% for choice in top_hashtags.top_hashtags_collection.field.queryset %}
    <li>
      <input type="radio" name="top_hashtags_collection" value="{{choice.collection_name}}" />
      <label for="">{{choice.collection_name}}</label>
    </li>
    {% endfor %}
  </ul>
</td>
&#13;
&#13;
&#13;

它正确显示了选项,但在点击“提交”按钮时我得到AttributeError at /top_hashtags_form 'QuerySet' object has no attribute 'model'

我想要的只是让用户在服务器端进行选择(显然)。

我尝试过很多东西,但是我找不到解决办法。我想这是愚蠢的,但我找不到。任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我能够解决问题。它可能不是最优雅的方式,但它有效:

{{ form.as_p }}

在我的index.py上,我只使用{{1}}。

我希望它可以帮助那些面临同样问题的人。