Как ограничить внешний ключ полем в другом внешнем ключе?

Простите за ужасное название вопроса, я не уверен, как это сформулировать. Вот фиктивный пример, чтобы прояснить ситуацию.

Если у меня есть модели типа:

class Shop(models.Model):
    mechanics = models.ManyToManyField(mechanic)

class Mechanic(models.Model):
    name = models.CharField()

class Car(models.Model):
    problem = models.CharField()
    shop = models.ForeignKey(Shop, on_delete=models.SET_NULL, blank=True, null=True)
    fixer = models.ForeignKey(Mechanic, on_delete=models.SET_NULL, blank=True, null=True)

Как ограничить модель так, чтобы fixer всегда был только механиком в том же магазине, что и автомобиль?

Надеемся, что это просто, но я просмотрел документацию Django и Stackoverflow, и все не совсем сходится.

Я рассмотрел возможность использования CheckConstraint в модели, но не уверен, как отформатировать запрос. Я также узнал о limit_choices_to ForeignKey, но столкнулся с аналогичной проблемой. Любая помощь будет принята с благодарностью.

Спасибо!

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