Как ограничить внешний ключ полем в другом внешнем ключе?
Простите за ужасное название вопроса, я не уверен, как это сформулировать. Вот фиктивный пример, чтобы прояснить ситуацию.
Если у меня есть модели типа:
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, но столкнулся с аналогичной проблемой. Любая помощь будет принята с благодарностью.
Спасибо!