gpt4 book ai didi

python - peewee:在反向引用外键时获取单个模型而不是 SelectQuery

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:16 25 4
gpt4 key购买 nike

我在 peewee 中遇到了反向引用外键的问题。考虑以下代码:

import peewee as pw

db = pw.SqliteDatabase(':memory:')

class Parent(pw.Model):
name = pw.CharField()

class Meta:
database = db


class Child(pw.Model):
name = pw.CharField()
parent = pw.ForeignKeyField(Parent, related_name="kid")

class Meta:
database = db

db.create_tables([Parent, Child])

bob = Parent.create(name="Bob")
alice = Child.create(name="Alice", parent=bob)

可以使用 bob.kid 访问 Bob 的 child ,这会给我一个 SelectQuery。但是,根据设计,我知道任何 Parent 都只能有一个 Child。然后可以使用 bob.kid[0] 访问该 child 。

我希望能够通过简单地调用 bob.kid 而不是 bob 从 Parent 访问 Child。 child [0] 进一步修改 Parent 类是否可以实现?

最佳答案

您可以只添加一个属性。

默认反向引用为 0..N,因此最好由选择查询表示。


示例:

class Parent(pw.Model):
name = pw.CharField()

class Meta:
database = db

@property
def kid(self):
return self.children.get()


class Child(pw.Model):
name = pw.CharField()
parent = pw.ForeignKeyField(Parent, related_name="children")

class Meta:
database = db

提示:

如果外键确实是一对一的,您可以在外键上添加一个 UNIQUE 约束。

关于python - peewee:在反向引用外键时获取单个模型而不是 SelectQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com