Как использовать .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'.