仅引用多个可能表中的一个

时间:2014-12-12 19:28:59

标签: sql sqlite peewee

我将设计糟糕的SQLite数据库移动到Peewee ORM,并且遇到了以下情况找到一个好方法的麻烦。

我有一个DVD表来保存有关发布本身的所有信息,以及描述DVD状态的tw表。这两个表都有其状态的具体细节。 代码示例:

class DVD(BaseModel):
    title = TextField()
    # More info like this

class Sold(BaseModel):
    date = DateField()
    buyer = TextField()

class Onloan(BaseModel):
    loaned = DateField()
    back = DateField()
    person = TextField()

如何正确地将一个状态表正确链接到DVD对象,以便我可以通过DVD.status访问状态数据?

1 个答案:

答案 0 :(得分:0)

您可以添加外键。

例如,如果DVD只能有一个Sold状态,您可以写:

class Sold(BaseModel):
    date = DateField()
    buyer = TextField()

class DVD(BaseModel):
    title = TextField()
    sold = ForeignKeyField(Sold, related_name='dvds')

另一方面,如果DVD可以多次借出,您可以写一下:

class DVD(BaseModel):
    title = TextField()

class Onloan(BaseModel):
    loaned = DateField()
    back = DateField()
    person = TextField()
    dvd = ForeignKeyField(DVD, related_name='loans')