Django模型-创建连接到组成员的ManyToManyField

时间:2019-05-31 19:22:06

标签: django django-models django-rest-framework django-forms django-views

我有以下模型:用户,成绩,小组,项目,任务。

每个年级都有用户(可以是学生或老师)。老师可以创建一组学生。如何创建可以连接到该年级特定用户的ManyToManyField?

现在,当我尝试建立一个组时,它是从Grades继承而来的,我得到了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

0 个答案:

没有答案