问题描述
// signals.py
@receiver(pre_save,sender=AcademicLesson)
def take_attendance(sender,instance,**kwargs):
new_file = instance.class_img
if new_file:
sub = instance.sub_id
# this for loops gives all student from each branch having comman subject(sub = instance.sub_id)
for branch in sub.universitybranch_set.all():
for std in branch.studentprofile_set.all():
if std.profile_encode: # for understanding,student present or not
print('-------------------------added')
instance.student.add(std)
else:
print('---------------------not-added')
print('no. of student=',len(instance.student.all()))
# // models.py
class AcademicLesson(models.Model):
date = models.DateField()
sub_id = models.ForeignKey('UniversitySubject',on_delete=models.CASCADE,limit_choices_to={'is_elect': True})
class_type = models.CharField(max_length=7,choices=[('lecture','Lecture'),('lab','Lab')])
slot = models.CharField(max_length=1,choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5'),('6','6')])
class_img = models.ImageField(upload_to=path_to_upload_media,blank=True)
student = models.ManyToManyField('StudentProfile',blank=True)
def __str__(self):
return f"{self.date} | {self.sub_id}"
class Meta:
verbose_name = 'Academic Lesson'
form which I submited from admin panel
当我用 django shell 进行验证时,它返回
lesson = AcademicLesson.objects.get(date='2021-04-05')
lesson.student.all()
我的尝试。
- 覆盖 models.Model.save 方法,但出现同样的问题。
- forms.ModelForm 不适合我们的项目
如果我在 django shell 中运行signals.py 中显示的代码,那么它可以正常工作,但是,相同的逻辑在signals.py 中不起作用
我哪里做错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)