Django ModelChoiceField返回索引。想要在那个位置获得对象

时间:2013-04-18 10:09:36

标签: python django html-select django-queryset

我有一个网页,您可以在其中添加新计算机/ IP到数据库,或者从下拉列表中选择之前添加的计算机/ IP。一切正常,除了用户从列表中选择项目后得到的是它的索引,而不是它的名称。 我怎么能得到这个名字?我试图将查询集作为向量访问here,但我得到一个TypeError。

views.py:

d = DropDownList(request.POST or None)
    if d.is_valid():
        c = request.POST.get('current')
        return HttpResponse(d.qs[c-1])

models.py:

class DropDownList(forms.Form):
    qs = Computer.objects.all().order_by('name')
    current = forms.ModelChoiceField(qs, widget=forms.Select(attrs={"onChange":'submit()'}))    

class Computer(models.Model):
    name = models.CharField(max_length=200, default='')
    ip = models.CharField(max_length=200, default='')
    def __unicode__(self):
        return self.name

home.html的:

<form method="post">
    {{ current }}
</form>

1 个答案:

答案 0 :(得分:1)

使用表单的重点在于它负责验证和数据转换,因此在您的视图中,您应该从表单中获取数据,而不是从POST本身获取数据。

if d.is_valid():
    c = d.cleaned_data['current']