使用Django模型来Map一对多和多对一

5us2dqdw  于 2023-05-01  发布在  Go
关注(0)|答案(1)|浏览(108)

我今天开始使用django,在创建基于API调用响应的模型时遇到了麻烦。我们可以有一个提供教授列表的课程。教授也可以教授多门课程。我不知道如何同时为Course类中的教授和Professor类中的课程创建列表。注意:我正在使用MongoDB,所以我没有使用postgres ArrayFields。我有以下代码:

from django.db import models

class Course(models.Model):
    department = models.CharField(max_length=4)
    course_number = models.CharField(max_length=4)
    title = models.CharField(max_length=100)
    description = models.CharField(max_length=1000)
    credits = models.IntegerField(max_length=1)
    gpa = models.DecimalField(max_digits=4, decimal_places=3)
    professors = ???

class Professor(models.Model):
    id = models.CharField(max_length=50, unique=True)
    name = models.CharField(max_length=100, unique=True)
    reviews = models.BooleanField(default=True)
    courses = ???

我访问了这个stackoverflow post,不确定这是否是最好的方法,考虑到这可能有点过时。
我还查看了ArrayFields类尝试使用它,但不确定是否只适用于postgres(因为我使用的是MongoDB)

oxcyiej7

oxcyiej71#

首先,没有必要在Professor模型中添加字段id,因为Django会自动执行。
关于您的问题,您可以创建一个新的模型,例如,称为Teaching,并将其关联为Professor-Course:

class Teaching(models.Model):
    course = models.ForeignKey(Course, on_delete=models.DO_NOTHING)
    professor = models.ForeignKey(Professor, on_delete=models.DO_NOTHING)

相关问题