我正在考虑制作一个宿舍分配Web应用程序。它有模特,学生,房间,宿舍。我想要的是创建一个每年后分配学生的功能。为此,我认为在学生看来,每个学生在完成四年的学业后可以在完成学位后点击腾出的宿舍,对于其他人,我想创建一些分配它们的东西, 现在有一定的限制,有本科学历,学位期限为4年,每年可以使用不同类型的房间,第一年三重分享,第二年和第三年双重分享和四年级单人间。此外,宿舍有博士学位。学生也是如此,但他们的逗留期限没有定义。
所以,我想的是第一年应该通过上传CSV文件来分配,我已经做了那个部分,所以下一部分是根据他们的喜好分配后续年份,那么我怎么能做这样的事情呢?在Django允许他们根据自己的喜好制作它,我想每个学生都会获得一个独特的令牌,而在填写一个学生可以为一个房间做的房间时,需要输入该令牌。这是正确的方式还是我应该做的其他事情。我是新手,请建议我这样做的好方法。
models.py
class Student(models.Model):
name = models.CharField(max_length = 40,help_text = "Name of the student")
entry_number = models.CharField(max_length = 11,help_text = "Entry Number of a student")
hostel_name = models.ForeignKey('Hostel', on_delete = models.SET_NULL,null = True)
room = models.ForeignKey('Room',on_delete = models.SET_NULL,null = True)
CHOICES = (
('m','Male'),
('f','Female'),
('e','Engaged'),
)
gender = models.CharField(max_length=1,choices=CHOICES)
def __str__(self):
return '%s, %s' % (self.name,self.entry_number)
def get_absolute_url(self):
return reverse('student-detail',args=[str(self.id)])
class Meta:
verbose_name="Student Record"
class Hostel(models.Model):
name= models.CharField(max_length= 15)
locality= models.URLField(max_length= 200, blank= True, default='',help_text='Google maps URL of the hostel')
total_rooms= models.PositiveSmallIntegerField(null=True, blank =True)
CHOICES = (
('m', 'Male'),
('f', 'Female'),
('e', 'Engaged'),
)
gender = models.CharField(max_length=1, choices=CHOICES, verbose_name=_('Type of Hostel'), help_text='Either Boys/Girls or Married students Hostel')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('hostel-detail',args=[str(self.id)])
class Meta:
verbose_name="Hostel Record"
class Room(models.Model):
hostel= models.ForeignKey(Hostel, on_delete=models.CASCADE)
name= models.CharField(max_length = 5)
floor= models.CharField(max_length = 1, blank=True)
wing= models.CharField(max_length = 1, blank=True)
comment= models.CharField(max_length = 100,blank=True, default = "comment here")
room_capacity = models.PositiveSmallIntegerField(validators=[MaxValueValidator(3),])
room_accomodation= models.PositiveSmallIntegerField()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('room-detail',args=[str(self.id)])
class Meta:
verbose_name="Room Record"