问题描述
我创建了不同的模型,在 Division 模型中,我参考了许多模型,它们的主键在 Division 模型中被引用为外键。我已将课程声明为批处理模型中的模型属性。 这是我的models.py文件
class lab_load(models.Model):
lab_code = models.CharField(max_length=10,null=True)
subject_name = models.CharField(max_length=100,null=True)
subject_abv = models.CharField(max_length=10,null=True)
lab_load = models.IntegerField(null=True)
semester = models.IntegerField(null=True)
max_numb_students = models.CharField(max_length=65,null=True)
instructors = models.ManyToManyField(Instructor)
def __str__(self):
return f'{self.lab_code} {self.subject_name} {self.subject_abv}'
class Batch(models.Model):
bat_name = models.CharField(max_length=50)
courses = models.ManyToManyField(lab_load)
@property
def get_courses(self):
return self.courses
def __str__(self):
return self.bat_name
class Division(models.Model):
division_id = models.CharField(max_length=25,primary_key=True)
batch = models.ForeignKey(Batch,on_delete=models.CASCADE,blank=True,null=True)
num_lab_in_week = models.IntegerField(default=0)
course = models.ForeignKey(lab_load,null=True)
lab_time = models.ForeignKey(LabTime,null=True)
room = models.ForeignKey(Labroom,null=True)
instructor = models.ForeignKey(Instructor,null=True)
def set_labroom(self,labroom):
division = Division.objects.get(pk = self.division_id)
division.room = labroom
division.save()
def set_labTime(self,labTime):
division = Division.objects.get(pk = self.division_id)
division.lab_time = labTime
division.save()
def set_instructor(self,instructor):
division = Division.objects.get(pk=self.division_id)
division.instructor = instructor
division.save()
我的 views.py 文件
class Data:
def __init__(self):
self._rooms = Room.objects.all()
self._meetingTimes = MeetingTime.objects.all()
self._instructors = Instructor.objects.all()
self._courses = Course.objects.all()
self._depts = Department.objects.all()
self._labrooms = Labroom.objects.all()
self._labTimes = LabTime.objects.all()
self._labcourses = lab_load.objects.all()
self._bats = Batch.objects.all()
def get_rooms(self): return self._rooms
def get_labs(self): return self._labs
def get_labrooms(self): return self._labrooms
def get_instructors(self): return self._instructors
def get_courses(self): return self._courses
def get_depts(self): return self._depts
def get_labcourses(self): return self._labcourses
def get_bats(self): return self._bats
def get_meetingTimes(self): return self._meetingTimes
def get_labTimes(self): return self._labTimes
在不同的类下:创建类 LabSchedule 下,我已经创建了函数初始化。
def initialize(self):
divisions = Division.objects.all()
for division in divisions:
bat = Division.batch
n = division.num_lab_in_week
if n <= len(LabTime.objects.all()):
labcourses = bat.courses.all() <------ Error in this line ------->
for labcourse in labcourses:
for i in range(n // len(labcourses)):
crs_inst = labcourse.instructors.all()
newClass = Classlab(self._classNumb,bat,division.division_id,labcourse)
self._classNumb += 1
newClass.set_labTime(data.get_labTimes()[rnd.randrange(0,len(LabTime.objects.all()))])
newClass.set_labroom(data.get_labrooms()[rnd.randrange(0,len(data.get_labrooms()))])
newClass.set_instructor(crs_inst[rnd.randrange(0,len(crs_inst))])
self._classes.append(newClass)
else:
n = len(LabTime.objects.all())
labcourses = bat.courses.all()
for labcourse in labcourses:
for i in range(n // len(labcourses)):
crs_inst = labcourse.instructors.all()
newClass = Classlab(self._classNumb,len(crs_inst))])
self._classes.append(newClass)
return self
我正在使用遗传算法来安排课程和实验室。 任何人都可以解决我的错误,这会有所帮助,谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)