使用P进行关系映射

2024-04-26 10:08:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我对关系数据库还比较陌生,对如何创建模型感到困惑。我需要做的是通过语言选择过滤帖子内容,并为此创建一个关系数据库。当我决定需要多少个模型(表)来完成这个任务时,我产生了疑问。举个例子:

你知道吗型号.py你知道吗

class Post(Model):
    timestamp = DateTimeField(default=datetime.datetime.now)
    user = ForeignKeyField(
        rel_model=User,
        related_name='posts'
    )
    language = TextField()
    content = ForeignKeyField(THIS NEEDS TO POINT TO THE LANGUAGE)

    class Meta:
        database = DATABASE

有可能完成这样的事情吗?我应该创建多个Post模型吗?你知道吗

提前谢谢你。你知道吗


Tags: topy模型内容datetimemodelposttimestamp
1条回答
网友
1楼 · 发布于 2024-04-26 10:08:32

你看过快速入门指南了吗?这样做可能会让您了解如何创建模型和建立关系:

http://docs.peewee-orm.com/en/latest/peewee/quickstart.html

为了回答您的直接问题,您可以为语言创建另一个表,即

class Language(Model):
    name = CharField()

    class Meta:
        database = DATABASE

所以你应该(清理一下):

DATABASE = SqliteDatabase('mydb.db') # or PostgresqlDatabase or MySQLDatabase

class BaseModel(Model):
    class Meta:
        database = DATABASE

class User(BaseModel):
    email = CharField()
    # whatever other user fields

class Language(BaseModel):
    name = CharField()
    # other fields?

class Post(BaseModel):
    timestamp = DateTimeField(default=datetime.datetime.now)
    user = ForeignKeyField(User, related_name='posts')
    language = TextField()
    content = ForeignKeyField(Language, related_name='posts')

相关问题 更多 >