简体   繁体   中英

How to fetch rows from a table based on a field which is present in a different table having a foreign key relationship with it?

Context

I have two tables as follows in Django

Table1: 
    - id
    - name
    - address
    - state
    - short_code
    
Table2: 
    - id
    - table1_id
    - p1, property (searchable field) 

Relationship between Table1 and Table2 : Table1(1) -> Table2(n) [ 1->n ]

Question

Let's say I have a searchable property p1 in Table2 . How to fetch all the rows from Table1 which is satisfying the following query parameters?

short_code(table1 field), state(table1 field), and property as p1(table2 field)

Remember, Table1 has 1:n relationship with Table2, so Table2 can have multiple rows satisfying foreign key relationship of field id from Table1.

You can do related lookups:

class MyModel1(models.Model):
   model2 = models.ForeignKey('myapp.MyModel2', related_name='model1',...)

class MyModel2(models.Model):
   fields...

Now you can do:

MyModel1.objects.filter(model2__pk=YOUR_MODEL2_PK)

Or

MyModel2.objects.filter(model1__pk=YOUR_MODEL_1_PK)

You can limit the results returned with .only()

Note:

Have a look at the docs for many to one relationships

Or the docs for querysets

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM