Возникли проблемы с обновлением некоторых ManyToManyField с помощью сигналов
Когда я создаю нового студента, я хотел бы, чтобы поле studentlist в Tutors и поле taught_by в Students отражали одинаковые значения.
ie добавить нового студента список учеников обновляется с именем ученика создан новый урок с именем ученика
я действительно потерялся с сигналами и тем, что нужно поместить внутрь, особенно при создании или редактировании множества полей
the signals.py:
@receiver(post_save, sender=Students)
def createdStudentToLesson(sender, instance, created, **kwargs):
if created:
student = instance
lesson = Lessons.objects.create(
student = student
)
print("lesson saved")
the models.py:
class Lessons(models.Model):
student = models.ForeignKey(Students, on_delete=models.SET_NULL, null=True)
headed_by = models.ForeignKey(Tutors, on_delete=models.SET_NULL, null=True)
day = models.CharField(max_length=4, choices=DAY_CHOICES, null=True)
start_time = models.TimeField(null=True, blank=True)
type = models.CharField(max_length=7, choices=TYPE_CHOICES, null=True)
price_band = models.CharField(max_length=7, choices=PAYMENT_TYPE_CHOICES, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True )
def __str__(self):
return str(self.student) + " at " + str(self.start_time)
class Meta:
ordering=['student','start_time']
class Students(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
taught_by = models.ManyToManyField("Tutors", blank=True)
school_year = models.CharField(max_length=2, choices=YEAR_CHOICES, null=True, blank=True)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
id = models.UUIDField(default=uuid.uuid4, primary_key=True,
unique=True, editable=False)
def __str__(self):
return str(self.name)
class Meta:
ordering = [
"name"
]
class Tutors(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
studentlist = models.ManyToManyField('Students', blank=True)
lessonlist = models.ManyToManyField('Lessons', blank=True)
short_bio = models.CharField(max_length=100,null=True, blank=True)
rate = models.CharField(choices=PAYMENT_TYPE_CHOICES, max_length=7,
blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
id = models.IntegerField(primary_key=True, unique=True)
def __str__(self):
return str(self.name)
заранее большое спасибо за ваше время.