当我使用Peewee连接两个表并从两个同名的表中选择属性时,最后一个表会覆盖其他表。例如,使用以下表格:
from peewee import *
db = SqliteDatabase(":memory:")
class BaseModel(Model):
class Meta:
database = db
class Module(BaseModel):
name = CharField()
class Student(BaseModel):
name = CharField()
member = ForeignKeyField(Module, related_name="members", null=True)
db.create_tables([Module, Student], safe=True)
数据如下:
history_id = Module.create(name="History")
science_id = Module.create(name="Science")
Student.create(name="Tim", member=history_id)
Student.create(name="Mike", member=science_id)
选择如下:
modules = Module.select(
Student.name,
Module.name
).join(
Student,
on=(Module.id == Student.member)
).group_by(Module).dicts()
我得到:
{'name': 'History'}
{'name': 'Science'}
或者,如果我在选择中颠倒顺序:
{'name': 'Tim'}
{'name': 'Mike'}
Peewee提供了一个解决这个问题的方法吗?你知道吗
刚刚意识到Peewee的
alias()
可以是used on columns也可以是表:提供:
以及:
相关问题 更多 >
编程相关推荐