在创建两个模型后,在两个模型之间创建关系。 (Python,Django,SQLite)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在创建两个模型后,在两个模型之间创建关系。 (Python,Django,SQLite)相关的知识,希望对你有一定的参考价值。
根据用于创建库的django教程进行解释:
假设您允许用户将Book
模型添加到库数据库中。但是你不希望他们在Genre
上添加Book
模型。相反,你的数据库中有一个Genre
模型已经包含了世界上所有列出的Genre
。当用户将Book
添加到您的数据库时,您希望数据库根据Genre
摘要中的文本将正确的Book
添加到Book
。假设Book
有一个TextField
命名摘要,当创建bookinstance时,它中包含science
和fiction
。然后,数据库将根据bookinstance的摘要Genre
中的单词,将science fiction
的TextField
添加到您的bookinstance中。这种情况发生在创建实例或紧接着发生时对我来说无关紧要。
我正在尝试用一个可以处理日志记录/创建训练的网站做同样的事情。当用户将workout
(即书籍到图书馆)添加到数据库时,我希望数据库根据锻炼movement
中的文本为锻炼添加TextField
(即书籍的类型)。示例如下:
我在网站上添加了一个Workout,其中包含以下信息:TextField
:
5轮:
- 15拉上
- 30蹲
- 200米跑
然后,我希望数据库在锻炼实例和锻炼实例的TextField:Pull Up,Squat和Run中使用的运动模型之间创建正确的关系。
通过这种方式,我可以通过包含上拉,深蹲或跑步的锻炼来搜索数据库,并且此锻炼将显示出来。每个运动模型还包含上半身,下半身等的“分类”ForeignKey
。因此,搜索也可以仅用于上半身的训练,依此类推。
我的问题是,我如何实施锻炼,运动和分类之间的模型关系?我不认为我可以在workout
和movement
之间使用ForeignKey或ManytoMany关系,因为它们都需要同时添加。换句话说,用户必须在TextField中键入锻炼,然后还要添加锻炼中的运动。我希望这是用户的一步过程。他们输入锻炼,数据库根据用户键入TextField的内容添加锻炼中的运动关系。我假设为了使这个功能起作用,必须在锻炼和运动模型之间创建关系,而不是在锻炼模型创建之后。但是,我不确定如何在数据库级别创建此功能。
我目前正在使用SQLite作为数据库,因为它是Django的默认设置。
有什么建议?
使用此代码,您的用户可以自行选择移动和bodyPart:
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)
元组是为了做出选择
以上是关于在创建两个模型后,在两个模型之间创建关系。 (Python,Django,SQLite)的主要内容,如果未能解决你的问题,请参考以下文章