Как избежать ошибки 1146 при миграции?

Когда я пытаюсь не выполнять миграции в новой базе данных, я получаю эту ошибку:

django.db.utils.ProgrammingError: (1146, «Таблица 'dorogi_test.activities_category' не существует")

Он вызывается этим запросом:

models.Category.objects.filter(level=0, active=True).get_descendants(include_self=True)

Который выполняется перед миграцией, поэтому он не может использовать несуществующую таблицу.

Я попытался сделать следующее:

def get_top_news_category():
    if models.Category.objects.exists():
        return models.Category.objects.filter(level=0, active=True).get_descendants(include_self=True)


@permission_classes((permissions.AllowAny,))
class TopNewsViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    serializer_class = ArticleSerializer
    c = get_top_news_category()
    queryset = models.Article.objects.filter(hot=True, category__in=c).order_by('-id')[:3]

Но мой код также падает на этой проверке. Как избежать этой ошибки и позволить Django начать миграцию без комментариев кода?


person Viktor    schedule 12.07.2016    source источник


Ответы (1)


Ой. Это было просто. Просто обернул все в функцию:

@permission_classes((permissions.AllowAny,))
class TopNewsViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    serializer_class = ArticleSerializer

    def get_queryset(self):
        c = models.Category.objects.filter(level=0, active=True).get_descendants(include_self=True)
        return models.Article.objects.filter(hot=True, category__in=c).order_by('-id')[:3]
person Viktor    schedule 12.07.2016