如何避免迁移时出现错误 1146?
How to avoid error 1146 on migration?
当我在新数据库上尝试不进行迁移时,出现此错误:
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)
在迁移之前执行,所以不能table不存在。
我尝试执行以下操作:
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在不注释代码的情况下开始迁移?
哦。那很简单。将所有内容都包装到函数中:
@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]
当我在新数据库上尝试不进行迁移时,出现此错误:
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)
在迁移之前执行,所以不能table不存在。
我尝试执行以下操作:
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在不注释代码的情况下开始迁移?
哦。那很简单。将所有内容都包装到函数中:
@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]