如何在加载时在ModelChoiceField django中显示选项的默认值?

时间:2016-05-29 15:53:36

标签: python django

我试图使用表单

创建一个ModelChoiceField
class Person(forms.Form):

    person =  forms.ModelChoiceField(queryset=Person.objects.filter(is_active=True).order_by('id'), required=False)
    age = forms.IntegerField(min_value=18, max_value=99, required=False)

以html输出的形式返回

<option value="1">Person object</option>

现在我想在加载页面时按nameid显示ModelChoiceField的默认值。例如:

<option value="7">David</option>

如果用户不想要,可以选择另一个。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

首先,您需要更改__unicode__方法(如果在python3上,则为__str__),这样它将返回人物对象的名称https://docs.djangoproject.com/en/1.9/ref/models/instances/#str

class Person:
    ... # your fields
    def __unicode__(self):
        return self.name

您需要为表单字段https://docs.djangoproject.com/en/1.9/ref/models/fields/#default

提供默认值
person =  forms.ModelChoiceField(queryset=Person.objects.filter(is_active=True).order_by('id'), required=False, default=Person.objects.get(id=7))