如果我明白了这一点,我会尝试展示一个例子。假设你有这些类:
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