Объекты, связанные с фильтрами в Django, используют ORM
Представьте себе, у меня есть модель A и модель B.
Class A (models.Model):
a_name = models.CharField(max_length=100)
Class B (models.Model):
b_name = models.CharField(max_length=100)
a_name = models.ForeignKey(A, on_delete=models.CASCADE, to_field="a_name", db_column="a_name")
Тогда я хочу получить A , и у каждого A будут все связанные с ним B
A.filter(a_name="a_name").all()
Но я также хочу отфильтровать B по b_name, когда я получаю результат A, как я могу это сделать?
Я думаю, что вы пытаетесь сделать обратный запрос к модели отношения ForeignKey. То есть от родительского класса к дочернему классу.
Попробуйте следующее:
# Access the A obj you want to query
a_obj = A.objects.filter(a_name = a_name)
# Query the related B obj's of the above A obj
# filtered by a specifc B obj name
# you can achieve this by calling _set on the child class (B)
# .ie. parentmodel.childmodel_set
b_obj = a_obj.b_set.filter(b_name=b_name)
Примечание:
При вызове _set имя модели записывается в нижнем регистре, т.е. b вместо B.
Если вы работаете с большими наборами данных, этот метод станет медленным. Вместо этого используйте ``fetch_related``. Я еще не начал оптимизировать запросы, но вы можете исследовать это, если потребуется.