Python 在Peewee中加入查询

Python 在Peewee中加入查询,python,peewee,flask-peewee,Python,Peewee,Flask Peewee,大家好,我的社区 我刚刚开始使用peewee应用程序,很少使用join查询。目前,我已安装了以下型号: class Equipment(BaseModel): equip_id = CharField(primary_key=True) is_fullset = BooleanField(default=False) class Department(BaseModel): dept_id = IntegerField(primary_key=True) de

大家好,我的社区

我刚刚开始使用peewee应用程序,很少使用join查询。目前,我已安装了以下型号:

class Equipment(BaseModel):
    equip_id = CharField(primary_key=True)
    is_fullset = BooleanField(default=False)


class Department(BaseModel):
    dept_id = IntegerField(primary_key=True)
    dept_name = CharField()


class User(BaseModel):
    email = CharField(primary_key=True)
    equip_id_fk = ForeignKeyField(Equipment, related_name="equipments", null=True)
    dept_id_fk = ForeignKeyField(Department, related_name="departments")
    user_name = CharField()
我想显示一个视图/表格,其中包含所有表格的组合信息。我试着为用户和设备这样做(目前):

这里我首先得到设备值,然后是用户值。我试着用设备更换用户,反之亦然,但效果不好。 基本上,我想按以下顺序将这三个表显示为一个单数表:

User Name || User Email || Dept_ID || Dept_NAME || EQUIP_ID || Is_Fullset

如果我需要更改模型或查询,请告诉我。非常感谢您的帮助。

非常感谢@coliefer,这很有效。我有一个与之相关的问题。我的一些用户实例有空外键,我认为上面建议的查询对它不起作用。。例如,这就是我创建新用户实例时如何将外键设为空:
user=user.create(email=request.form['email\u id'],user\u name=request.form['user\u name'],dept\u fk=request.form['dropdown\u depts',equipment\u id\u fk=None)
其次,当我试图编辑一个具有设备id的用户实例时,它确实会在列表上显示新设备id,但不会使用建议的查询更新is_fullset(布尔值)<代码>设备id=请求。表单['radioID']设备。创建(设备id=设备id,is\U fullset=请求。表单['radioType]”)用户=用户。选择()。其中(user.email==电子邮件id)。get()user.Equipment\u id\u fk=设备id用户。save()非常感谢您的帮助:)
query = (User
         .select(User, Equipment, Department)
         .join(Equipment, JOIN.INNER)
         .switch(User)
         .join(Department, JOIN.INNER))
for row in query:
    print(row.user_name, row.email, row.dept_id_fk.dept_id,
          row.dept_id_fk.dept_name, row.equip_id_fk.equip_id,
          row.equip_id_fk.is_fullset)
query = (User
         .select(User, Equipment, Department)
         .join(Equipment, JOIN.INNER)
         .switch(User)
         .join(Department, JOIN.INNER))
for row in query:
    print(row.user_name, row.email, row.dept_id_fk.dept_id,
          row.dept_id_fk.dept_name, row.equip_id_fk.equip_id,
          row.equip_id_fk.is_fullset)