Возможно ли отфильтровать набор запросов по его объектам ForeignKey related_name?
У меня есть простая модель:
class Object(models.Model):
name = CharField()
root = ForeignKey("self", null=True, blank=True, on_delete=models.SET_NULL)
Я создаю несколько объектов:
parent1 = Object.create(name="parent1")
o1 = Object.create(name="1", root=parent1")
parent1.object_set.all() # Returns queryset with o1
Возможно ли отфильтровать набор запросов по связанным_именам объектов ForeignKey (т.е. object_set)? Что-то вроде:
Object.objects.filter(object_set__name="1") # To return parent1
Я получаю следующую ошибку: Cannot resolve keyword 'object_set' into field.
Я понимаю, что могу сделать Object.object.get(name="1").root, но это приводит к дополнительным запросам, которые в моем конкретном случае могут сильно увеличиться.
Использование:
Object.objects.filter(object__name="1")`
вместо:
Object.objects.filter(object_set__name="1")
Как определить имя поиска описано в документации:
Хотя это можно настроить, по умолчанию вы ссылаетесь на "обратное" отношение в поиске, используя строчное имя модели.