Я пытаюсь показать пример, если я понял. Допустим, у вас есть эти классы:
class User():
def __init__(self, id, name):
self.id = id
self.name = name
class Image():
def __init__(self, id, user_id, filename):
self.id = id
self.user_id = user_id
self.filename = filename
И следующие коллекции:
users = [User(1, 'Jim'), User(2, 'Spock')]
images = [Image(1, 1, 'jim_1.jpg'), Image(2, 1, 'jim_2.jpg'), Image(3, 2, 'spk_1.jpg')]
Когда вы выбираете пользователя из коллекции, скажем, первое:
user = users[0]
Вы можете запросить изображения следующим образом:
user_images = [ image for image in images if image.user_id == user.id ]
for image in user_images:
print(image.filename)
Хотя если у вас есть изображение, так как в этом случае это отношение один ко многим:
image = images[0]
user = [user for user in users if user.id == image.user_id][0] # [0] as it is 1:n relation
Для таблицы соединений:
join_table = [ {'name': user.name, 'filename': image.filename} for user in users for image in images if user.id == image.user_id ]
for e in join_table:
print(e['name'], e['filename'])
Что возвращает:
# Jim jim_1.jpg
# Jim jim_2.jpg
# Spock spk_1.jpg