亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Django 中連接多個模型

如何在 Django 中連接多個模型

海綿寶寶撒 2023-07-11 15:27:08
我是 Django 的初學者,想要在 Django 模型中創建一個系統,用戶可以上傳帶有標題和不同章節的課程,其中都可以包含多個視頻。我考慮過創建三個模型1. 課程與課程標題2. 章節其中有不同的視頻3. 視頻這是帶有視頻標題的視頻但我不知道如何在這三個模型之間創建連接,以便一門課程可以有多個章節,一章可以有多個視頻。這些是我的第一個模型(我剛剛快速創建了它們):def user_directory_path(instance, filename):? ? # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>? ? return 'user_{0}/{1}'.format(instance.user.id, filename)class video(models.Model):? ? title = models.CharField(max_length=100)? ? video = models.FileField(upload_to=user_directory_path)class course(models.Model):? ? title = models.CharField(max_length=100)class chapter(models.Model):? ? pass我應該如何調整模型并創建連接來完成我想要的系統?
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

您可以使用以下模型作為基礎。通常,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)


查看完整回答
反對 回復 2023-07-11
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

以下是關于您可以執行的操作的草稿:

請注意,類名稱采用 CamelCase**


class Course(models.Model):

    title = models.CharField(max_length=100)


class Chapter(models.Model):

    course = models.ForeignKey(Course, on_delete=models.CASCADE)


class Video(models.Model):

    title = models.CharField(max_length=100)

    video = models.FileField(upload_to=user_directory_path)

    chapter = models.ForeignKey('Chapter', on_delete=models.CASCADE)


查看完整回答
反對 回復 2023-07-11
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號