在两个模型都已创建之后创建两个模型之间的关系(Python、Django、SQLite)

2024-05-19 19:48:07 发布

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

根据django教程解释如何创建库:

假设您允许用户向库数据库添加Book模型。但是,您不希望他们将Genre模型添加到Book。相反,您的数据库中已经有了一个Genre模型,其中列出了世界上所有的Genre。当用户将Book添加到数据库时,您希望数据库根据Book摘要中的文本将适当的Genre添加到Book。假设Book有一个名为summary的TextField,并且在创建bookinstance时,它包含单词sciencefiction。然后,数据库将根据bookinstance摘要TextField中找到的单词向bookinstance添加Genrescience fiction。无论这是在创建bookinstance时发生还是在创建之后立即发生,对我来说都无关紧要

我正在尝试做同样的事情与一个网站,将处理日志记录/创建训练。当用户向数据库添加workout(即图书到图书馆)时,我希望数据库向训练添加movement(即图书的流派),具体取决于训练TextField中的文本。示例如下:

我在网站上添加了一个锻炼,其中包含以下信息作为TextField

5轮:

  • 15个引体向上
  • 30次下蹲
  • 200米跑

然后,我希望数据库在训练实例和在训练实例的文本字段中使用的运动模型之间创建正确的关系:上拉、下蹲和跑步

通过这种方式,我可以通过包含引体向上、下蹲或跑步的训练搜索数据库,然后就会显示此训练。每个运动模型还包含上半身、下半身等的“分类”ForeignKey,因此也可以搜索仅限于上半身的训练等等

我的问题是,我将如何实现锻炼、运动和分类之间的模型关系?我不认为我可以在workoutmovement之间使用ForeignKey或许多关系,因为它们需要同时添加。换句话说,用户必须在文本字段中输入训练,然后还要添加训练中的动作。我希望这是一个一步的过程,为用户。他们输入训练,数据库根据用户在文本字段中输入的内容添加训练中哪些动作的关系。我假设,为了使此功能发挥作用,必须在创建训练模型之后,而不是在创建过程中,在训练和运动模型之间创建关系。但是,我不确定如何在数据库级别创建此功能

我目前使用SQLite作为数据库,因为它是Django的默认值

有什么建议吗


Tags: 用户模型文本数据库关系网站单词science
1条回答
网友
1楼 · 发布于 2024-05-19 19:48:07

使用此代码,您的用户将能够自行选择移动和身体部位:

from django.db import models

movement_tuple = (
    ('Pulls up', 'Pulls up'),
    ('Squats', 'Squats'),
    ('Run', 'Run')
)

body_part = (
    ('Upper Body', 'Upper Body'),
    ('Lower Body', 'Lower Body')
)

class Workout(models.Model):
    name = models.CharField(max_length=50, default=None)
    movement = models.CharField(max_length=30, choices=movement_tuple)
    body_part = models.CharField(max_length=30, choices=body_part)
    value = models.CharField(max_length=30)

    def __str__(self):
        return(self.name)

元组使选择成为可能

相关问题 更多 >