【问题标题】:choices with model in the form field in the django test在 django 测试的表单字段中选择模型
【发布时间】:2018-07-05 18:23:08
【问题描述】:

我有这个表格:

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

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

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

【问题讨论】:

  • 就像错误 django 向您提供的那样,Django 无法在数据库中看到该表,所以首先,您是否进行了正确的迁移?

标签: django django-forms django-testing


【解决方案1】:

问题是 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())

【讨论】:

  • 我用过:class Dashboard(forms.Form): year = forms.ModelChoiceField(queryset=Year.objects.all())
猜你喜欢
  • 2013-01-07
  • 2011-01-03
  • 2021-10-21
  • 2015-10-10
  • 1970-01-01
  • 2012-02-06
  • 2021-09-29
  • 1970-01-01
  • 2018-10-20
相关资源
最近更新 更多