Как предотвратить ошибку django, если в схеме нет поля? - PullRequest
1 голос
/ 12 февраля 2020

Я хочу иметь возможность пометить поле как неиспользуемое и, следовательно, не допустить возникновения ошибки django, когда соответствующий столбец в схеме базы данных не существует.

Я хочу сделать это, потому что есть нет причин, по которым при развертывании неиспользуемого кода должен быть взломан sh сайт.

Что-то вроде

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'")

1 Ответ

0 голосов
/ 12 февраля 2020

Стандартный подход заключается в использовании операторов try: и except, ссылка . В вашем примере,

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

Я не могу придумать другого способа справиться с этим.

...