我正在創建一個學生專案管理系統,每個學生都會有一個專案組。只有管??理員才能使用下拉串列選單將學生添加到特定組。到目前為止,我已經創建了一個學生模型和一個小組模型,例如這些。
class Student(models.Model):
user = models.OneToOneField(User,null=True,on_delete=models.CASCADE)
id = models.IntegerField(max_length=11,primary_key=True)
course_taken = models.CharField(max_length=50,null=True)
specialization = models.CharField(max_length=50,null=True)
area_of_interest = models.CharField(max_length=50,null=True)
group = models.ForeignKey(Group,null=True)
def __str__(self):
if self.user.first_name and self.user.last_name:
full_name = self.user.first_name " " self.user.last_name
return full_name
class Group(models.Model):
id = models.AutoField(primary_key=True)
members = models.OneToManyField(User,through='Student')
project_id = models.ForeignKey(Project,null=True)
如何從這里繼續?
uj5u.com熱心網友回復:
from django.db import models
class Reporter(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField()
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
class Meta:
ordering = ['headline']
如本例所示,您可以通過模型關系(一對一、一對多、多對一、多對多)來做到這一點。我建議查閱檔案: https ://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_one/
uj5u.com熱心網友回復:
您必須創建三個不同的類來完成該任務。通過注冊課程,管理員將能夠將學生添加到特定組。
class Student(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
class Course(models.Model):
name = models.CharField(max_length=30)
student = models.ManyToManyField(Student, through='Enrollment')
def __str__(self):
return self.name
class Enrollment(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
date_enrolled = models.DateField()
final_grade = models.CharField(max_length=1, blank=True, null=True)
class Meta:
unique_together = [['student', 'course']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/417819.html
標籤:
