2016-07-12 2 views
1

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

django.db.utils.ProgrammingError: (1146, "Table 'dorogi_test.activities_category' doesn't exist")

Он поднятый этим запросом:

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

Какие exicutes перед переносом, поэтому она не может ли таблицы, которая не существует.

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

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 начать миграцию без комментирования кода?

ответ

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] 
Смежные вопросы