[英]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.