Как получить строки из таблицы на основе поля, которое присутствует в другой таблице, имеющей с ней связь по внешнему ключу?
Контекст
В Django у меня есть две таблицы следующего вида
Table1:
- id
- name
- address
- state
- short_code
Table2:
- id
- table1_id
- p1, property (searchable field)
Взаимосвязь между таблицами Table1 и Table2: Table1(1) -> Table2(n) [ 1->n ]
>Вопрос
Допустим, у меня есть свойство с возможностью поиска p1 в Table2. Как получить все строки из Table1, удовлетворяющие следующим параметрам запроса?
short_code(table1 field), state(table1 field), and property as p1(table2 field)
Помните, что Table1 имеет отношение 1:n с Table2, поэтому Table2 может иметь несколько строк, удовлетворяющих отношению внешнего ключа поля id из Table1.
Любая помощь будет очень признательна. Уже давно работаю над этой проблемой.
Заранее спасибо.
Вы можете выполнять связанные поиски:
class MyModel1(models.Model):
model2 = models.ForeignKey('myapp.MyModel2', related_name='model1',...)
class MyModel2(models.Model):
fields...
Теперь вы можете сделать:
MyModel1.objects.filter(model2__pk=YOUR_MODEL2_PK)
Or
MyModel2.objects.filter(model1__pk=YOUR_MODEL_1_PK)
Вы можете ограничить возвращаемые результаты с помощью .only()
Примечание:
Посмотрите документацию по отношениям "многие к одному"
. .