当架构中不存在字段时,如何防止django出错?

问题描述 投票:1回答:1

我希望能够将一个字段标记为未使用,因此当数据库模式中的相应列不存在时,可以防止django出错。

我想这样做是因为没有理由部署未使用的代码会使站点崩溃。

类似

class SomeObject(Model):
  some_field = models.CharField(unused=True)

SomeObject.objects.all()[0].id  # this line should not fail

现在它给出

django.db.utils:OperationalError: (1054, "Unknown column 'someobject.some_field' in 'field list'")

django django-models database-migration django-migrations
1个回答
0
投票

一种标准方法是使用try:except语句reference。在您的示例中,

try:
    SomeObject.objects.all()[0].id
exept OperationalError:
    pass # or whatever you want in this case

如果经常使用模型,请考虑重新定义其get_queryset函数。例如,

class YourClass:
def get_queryset(self, request):
    try:
        super(your-model-super, self).get_queryset(request)
    exept OperationalError, error:
        if error.code == 1054:
            pass
        else:
            raise

我想不出其他方法来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.