Отношения второго уровня (аналогично Rails's has_many :through)
У меня есть следующая модель установки (неактуальные части удалены):
class Client(models.Model):
name = models.CharField(max_length=200, unique=True)
class Vehicle(models.Model):
client = models.ForeignKey(Client, on_delete=models.PROTECT, related_name="vehicles")
vin = models.CharField(max_length=200, unique=True)
class Chip(models.Model):
vehicle = models.ForeignKey(Vehicle, on_delete=models.PROTECT)
serial_number = models.CharField(max_length=200, unique=True)
Есть ли простой способ получить все чипы, принадлежащие определенному клиенту (через таблицу Vehicle)?
Что-то похожее на has_many :through
в Rails?
Хотелось бы иметь возможность называть что-л. как:
client = Client.objects.first()
chips = client.chips.all()
В итоге я поместил это в модель, чтобы сохранить компактность представления:
class Client(models.Model):
...
@property
def chips(self):
return Chip.objects.filter(vehicle__client=self)