django测试中表单字段中的模型选择

时间:2018-01-26 11:55:28

标签: django django-forms django-testing

我有这样的表格:

class Dashboard(forms.Form):
        year = forms.ChoiceField(choices=Year.objects.all().values_list('pk', 'year'))

由于以下错误,我的测试未运行:

django.db.utils.OperationalError: no such table: common_year

1 个答案:

答案 0 :(得分:0)

问题是Django在加载forms.py时尝试获取查询集,但该表尚未创建。

您可以使用choices的可调用来修复错误。这意味着在实例化表单之前不会评估查询集。

def year_choices():
    return Year.objects.all().values_list('pk', 'year')

class Dashboard(forms.Form):
    year = forms.ChoiceField(choices=year_choices)

另一种选择是改为使用ModelChoiceField

class Dashboard(forms.Form):
    year = forms.ModelChoiceField(queryset=Year.objects.all())