@@ -21,6 +21,7 @@ from __future__ import absolute_import
from django.contrib.auth.models import User
from django import forms
+from django.db.utils import ProgrammingError
from patchwork.models import Patch, State, Bundle, UserProfile
@@ -165,8 +166,14 @@ class OptionalModelChoiceField(forms.ModelChoiceField):
__init__(initial=self.no_change_choice[0], *args, **kwargs)
def _get_choices(self):
- choices = list(
- super(OptionalModelChoiceField, self)._get_choices())
+ # _get_choices queries the database, which can fail if the db
+ # hasn't been initialised yet. catch that and give an empty
+ # set of choices for now.
+ try:
+ choices = list(
+ super(OptionalModelChoiceField, self)._get_choices())
+ except ProgrammingError:
+ choices = []
choices.append(self.no_change_choice)
return choices
An OptionalModelChoiceField will attempt to query the database to get choices in its __init__ method. This fails if the database hasn't been initialised yet. So, put that in a try/catch block. This lets things work through the migration and loading of data from fixtures. Signed-off-by: Daniel Axtens <dja@axtens.net> --- patchwork/forms.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)