Ошибка начальной миграции Django при использовании связанного набора запросов в Modelform
Я использую queryset в экземпляре modelform для заполнения вариантов выбора. Однако, когда я хочу запустить начальную миграцию базы данных проекта, она возвращает
django.db.utils.ProgrammingError: отношение "core_category" не существует существует LINE 1: ..._category". "name", "core_category". "fa_icon" FROM "core_cate...
Я пытался использовать блок try - except
для обхода этого, но это не изменило ситуацию. Так как же решить эту проблему? Поскольку, конечно, таблица categories
будет несуществующей при первоначальной миграции проекта.
# forms.py
class PollerForm(ModelForm):
"""
A form to create new Pollers
"""
# Get categories as choices, use try except
# for initial migrations if table is not available yet
try:
CHOICES = Category.objects.all()
except (OperationalError, ProgrammingError) as e:
CHOICES = []
# User instance will be passed in the view
class Meta:
model = Poller
exclude = ('created_by',)
category = forms.Select(choices=CHOICES) # Error raised here
# models.py
class Category(models.Model):
"""
A table to store available categories
"""
# Categories name
name = models.CharField(max_length=20)
# Fontawesome icon tag
fa_icon = models.CharField(max_length=20)
def __str__(self):
return f'{self.name}'
class Poller(models.Model):
"""
A table to store Pollers
"""
# Unique identifier
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
# Created at date
created_at = models.DateTimeField(auto_now_add=True)
# User who created the poller
created_by = models.ForeignKey('user.UserProfile', on_delete=models.CASCADE, related_name='user')
# The Poller's text
text = models.CharField(max_length=250)
# The pollers category
category = models.ForeignKey('core.Category', on_delete=models.CASCADE, related_name='category')
# Option one of the poller
option_one = models.CharField(max_length=20)
# Option two of the poller
option_two = models.CharField(max_length=20)
def __str__(self):
return f'{self.text}'