Как создать пользовательскую группу студентов и добавить студентов в эту группу?

Я создаю систему управления проектами студентов, и у каждого студента будет группа с проектом. Только администратор сможет добавлять студентов в определенную группу, используя меню выпадающего списка. На данный момент я создал модель студента и модель группы следующим образом.

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)

Как продолжить?

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']

Как видно из этого примера, это можно сделать с помощью Model-Relationship (one-to-one, one-to-many, many-to-one, many-to-many). Я бы посоветовал обратиться к документации: https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_one/

Для выполнения этой задачи вам нужно создать три разных класса. С помощью класса Enrollment администратор сможет добавлять студентов в определенную группу.

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']]
Вернуться на верх