Django:添加更多模型字段中有多个值

2024-06-01 14:45:59 发布

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

我想创建一个教室应用程序,其中只有一个老师和学生可以有多个。一个学生可以在多个班级。我想在一个教室里存储学生的用户名。有没有模型字段可以用来存储学生的用户名。 目前我的代码:

在模型.py在

from django.db import models
from django.conf import settings
# Create your models here.

class classroom(models.Model):
    teacher = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
    students = models.CharField(max_length=120)

Tags: django代码frompy模型import应用程序db
2条回答

您应该创建一个单独的模型来存储学生,但更重要的是,您应该从他们的官方网站上的Django教程开始。在

但你的问题也相应地得到了解决:

from django.db import models
from django.conf import settings

class ClassRoom(models.Model):
    teacher = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)

class Student(models.Model):
    name = models.CharField(max_length=128)
    class_room = models.ForeignKey(ClassRoom)

这样你就可以随心所欲地增加学生。这是标准的做法,但是如果您真的只想保存名称而不保存其他内容(并且使用的是PostgreSQL),那么也可以使用ArrayField来实现这一点。但是你可以自己在文档里查一下。在

创建学生模型并将多对多密钥添加到教室实例。这样你就告诉“一个学生可能有几个教室,一个教室可能有许多学生”

class ClassRoom(models.Model):
    teacher = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)


 class Student(models.Model):
    name = models.CharField(max_length=120)
    classroom =  models.ManyToManyField(ClassRoom, related_name="students")

因此,如果您有一个classroom实例,并希望获得它的所有学生。请注意field教室中的相关的_name属性。在

^{pr2}$

如果不添加related_name属性,则需要使用_set表示法

classroom.student_set.all()

如果你有一个学生的例子,想得到他的教室

student.classroom

提示:对于类模型命名,使用CamelCase符号。在

相关问题 更多 >