Мы используем двойное подчеркивание для ссылки на свойство некоторого связанного объекта в запросе django. Вы можете думать об этом так же, как о точке, объединяющей свойства.
Предположим, у меня есть следующие модели:
class Car(models.Model):
...
engine = models.ForeignKey('Engine', ...)
class Engine(models.Model):
...
engine_size = models.IntegerField()
engine_make = models.ForeignKey('EngineMake', ...)
class EngineMake(models.Model):
company_name = models.CharField()
Теперь, если бы я хотел Чтобы найти все автомобили с двигателем, произведенным определенной компанией, до go в соответствующих полях я могу использовать двойное подчеркивание, например:
cars = Car.objects.filter(engine__engine_make__company_name="something")
В вашем случае вы не На самом деле нужно двойное подчеркивание, так как, когда вы добавляете ForeignKey, Django автоматически добавляет поле с именем foo_id
, например, если вы добавляете внешний ключ с именем foo
.