Python 如何在Django中连接多个模型
我是Django的初学者,我想在Django模型中创建一个系统,用户可以上传一个课程的标题和不同的章节,所有这些都可以有多个视频。 如图所示 我考虑创建三个模型 1。课程 课程名称 2。第章 里面有不同的视频 3。视频 这里有一段视频,视频的标题 但我不知道如何在这三个模型之间建立联系,以便在一门课程中有多个章节,在一个章节中有多个视频 这些是我的第一个模型(我只是快速创建):Python 如何在Django中连接多个模型,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我是Django的初学者,我想在Django模型中创建一个系统,用户可以上传一个课程的标题和不同的章节,所有这些都可以有多个视频。 如图所示 我考虑创建三个模型 1。课程 课程名称 2。第章 里面有不同的视频 3。视频 这里有一段视频,视频的标题 但我不知道如何在这三个模型之间建立联系,以便在一门课程中有多个章节,在一个章节中有多个视频 这些是我的第一个模型(我只是快速创建): def用户目录路径(实例,文件名): #文件将上载到媒体\u ROOT/用户_/ 返回'user{0}/{1}'。格
def用户目录路径(实例,文件名):
#文件将上载到媒体\u ROOT/用户_/
返回'user{0}/{1}'。格式(instance.user.id,文件名)
课堂视频(models.Model):
title=models.CharField(最大长度=100)
video=models.FileField(上传到=user\u目录\u路径)
课堂课程(models.Model):
title=models.CharField(最大长度=100)
课程章节(models.Model):
pass
以下是关于您可以做什么的草稿:
请注意,类名是大写的**
课堂课程(models.Model):
title=models.CharField(最大长度=100)
课程章节(models.Model):
课程=models.ForeignKey(课程,on_delete=models.CASCADE)
课堂视频(models.Model):
title=models.CharField(最大长度=100)
video=models.FileField(上传到=user\u目录\u路径)
章=模型。ForeignKey(“章节”,OnOnDele=模型,级联)< /代码> 您可以使用下面的模型作为基础。通常,ForeignKey
创建多对一关系(一个用户可以拥有多个课程,但一个课程不能由多个用户拥有)。而ManyToManyField
创建了多对多关系(一个学生可以注册多个课程,一个课程也可以注册多个学生)。请注意,related_name属性是在从类指向的相关对象(示例:)访问实例(包含关系字段的类)时如何引用实例的
from django.contrib.auth.models import User
from django.db import models
class Subject(models.Model):
title = models.CharField(max_length=200)
class Course(models.Model):
owner = models.ForeignKey(User, related_name='courses_created', on_delete=models.CASCADE)
subject = models.ForeignKey(Subject, related_name='courses', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
students = models.ManyToManyField(User, related_name='courses_joined', blank=True)
class Chapter(models.Model):
course = models.ForeignKey(Course, related_name='chapters', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
description = models.TextField(blank=True)
class VideoItem(models.Model):
title = models.CharField(max_length=250)
video = models.FileField(upload_to=user_directory_path)
chapter = models.ForeignKey(Chapter, related_name='videos', on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)