Как использовать .get(id=some_model_field) в ограничениях модели?

У меня есть класс 'Car' класс 'EngineType' и я хочу добавить к нему ограничения. Я хочу проверить, какой тип двигателя установлен в автомобиле, поэтому я попробовал:

models.CheckConstraint(check=(Q(EngineType.objects.get(id=engine_type).name=='electric')), name='test_constraint')

где 'engine_type' является внешним ключом к EngineType.

Выдает ошибку:

NameError: name 'engine_type' is not defined. Did you mean: 'EngineType'?

Ограничения прекрасно работают без .get(), например

models.CheckConstraint(check=(Q(engine_type=1)), name='test_constraint2'),

значит, доступ к 'engine_field' из ограничений есть, но я должен проверить текущий тип двигателя, а не статический.

Любая помощь будет признательна!

Перечисление 'Car' и 'EngineType' без некоторых других полей:

class EngineType(models.Model):
    name = models.CharField(max_length=100)
class Car(models.Model):
    engine_type = models.ForeignKey(EngineType, on_delete=models.PROTECT)

    class Meta:
        constraints = [
        models.CheckConstraint(check=(Q(EngineType.objects.get(id=engine_type).name=='electric')), name='test_constraint')

    ]

Django автоматически добавляет 'id к полям внешнего ключа, я попытался заменить в .get() 'engine_type' на 'engine_type_id', но получил ту же ошибку с заменой 'engine_type' на 'engine_type_id'.

Вернуться на верх