簡體   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