如何避免迁移错误1146?

时间:2016-07-12 06:44:36

标签: django database django-migrations

当我尝试不对新数据库进行迁移时,我收到此错误:

  

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在不注释代码的情况下开始迁移?

1 个答案:

答案 0 :(得分: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]