dig*_*ngo 3 python foreign-keys peewee
我在向后引用外键方面有些挣扎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)
Run Code Online (Sandbox Code Playgroud)
可以与Bob的孩子接触bob.kid,这可以给我一个机会SelectQuery。但是,根据设计,我知道任何一个Parent都只能有一个Child。然后可以使用访问该孩子bob.kid[0]。
我希望能够通过简单地调用而不是Child从a 访问。无需进一步修改类就可以实现吗?Parentbob.kidbob.kid[0]Parent
您可以只添加一个属性。
默认情况下,后向引用是0..N,因此最好由select查询代表。
例:
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
Run Code Online (Sandbox Code Playgroud)
小费:
如果外键确实是一对一的,则可以UNIQUE对外键添加约束。