Django Models - создайте ManyToManyField, который подключается к членам группы - PullRequest
0 голосов
/ 31 мая 2019

У меня есть эти модели: пользователи, оценки, группы, проекты, задачи.

Каждый класс имеет пользователей (это может быть ученик или учитель). Учитель может создавать группы учеников. Как мне создать ManyToManyField, который подключается к конкретным пользователям этого класса?

Прямо сейчас, когда я пытаюсь создать группу, она наследуется от Оценок, и я получаю EK17A, TE17A (обратите внимание, что я хочу получить пользователей в EK17A или пользователей в EK17A)

Это так, чтобы учитель мог распределить учащихся по проектным группам: D

from django.db import models

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    age = models.IntegerField()
    description = models.CharField(max_length=300)
    is_student = models.BooleanField(default=False)
    is_teacher = models.BooleanField(default=False)

    class Meta:
        verbose_name_plural = 'User Profiles'

    def __str__(self):
        return self.user.username

    @receiver(post_save, sender=User)
    def create_user_data(sender, update_fields, created, instance, **kwargs):
    if created:
        user  = instance
        profile = UserProfile.objects.create(user=user, is_teacher=False, is_student=True, age=18, description='No Description')


class Grades(models.Model):
    name = models.CharField(max_length=10)
    members = models.ManyToManyField(UserProfile, blank=True)

    class Meta:
        verbose_name_plural = 'Grades'

    def __str__(self):
        return self.name

class TeacherProjectTask(models.Model):
    title = models.CharField(max_length=150)
    description = models.CharField(max_length=1000, blank=True)
    state = models.CharField(max_length=20)

    class Meta:
        verbose_name_plural = 'Tasks'

    def __str__(self):
        return self.title

class TeacherProject(models.Model):
    title = models.CharField(max_length=150)
    description = models.CharField(max_length=1000)
    tasks = models.ManyToManyField(TeacherProjectTask, blank=True)
    grade = models.OneToOneField(Grades, blank=True, on_delete=models.CASCADE)

    class Meta:
        verbose_name_plural = 'Projects'

    def __str__(self):
        return self.title

class ProjectGroup(models.Model):
    title = models.CharField(max_length=150)
    description = models.CharField(max_length=1000)
    members = models.ManyToManyField(Grades, blank=True)

    class Meta:
        verbose_name_plural = 'Group'

    def __str__(self):
        return self.title
...