我想为教室创建一个应用程序,其中只有一个老师和学生可以不止一个。一个学生可以在多个班级。我想将学生的用户名存储在一个教室中。是否有任何模型字段可用于存储学生的用户名。 我的代码到目前为止:
models.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)
答案 0 :(得分:1)
创建Student模型并向ClassRoom实例添加多对多键。通过这种方式,你正在告诉他们学生可能有几个教室,一个教室可能有很多学生"
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
实例,并希望得到所有学生。注意字段教室中的related_name属性。
classroom.students.all()
如果您没有添加related_name
属性,则需要使用_set
表示法
classroom.student_set.all()
如果您有学生实例并想要上他的课堂
student.classroom
提示:对于类模型命名,请使用CamelCase表示法。
答案 1 :(得分:1)
你应该创建一个单独的模型来存储学生,但更重要的是 - 你应该从他们官方网站上的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。但请亲自在文档中查看。