繁体   English   中英

django:在模型字段中添加多个值

[英]django:adding more than one value in model field

我想为教室创建一个应用程序,在该应用程序中,他们唯一的一名老师和学生可以不止一个。一个学生可以在一个以上的班级中学习。 我想将学生的用户名存储在一个教室中。 我可以使用任何模型字段来存储学生的用户名吗? 到目前为止我的代码:

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)

创建一个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表示法。

您应该创建一个单独的模型来存储学生,但不仅限于此-您应该从他们官方站点上的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。 但是请自己在文档中查看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM