说我有以下型号:
Class Classroom(models.Model):
name = CharField(max_length=128)
最初,我希望这个Classroom
可以在一年中的每个周末(周六和周日)都被占用。然后,一个人可以来{占用/租用classroom
某一天。例如,Foo先生看到它可以使用,并希望在9月27日Satuday占据它。实现这种逻辑的解决方案(或最好的解决方案是什么?)
方法是什么?我应该创建另一个表,哪个?我应该添加什么类型的字段?
非常感谢!
答案 0 :(得分:1)
也许这样的事情可行:
class Appointment(models.Model):
day = models.DateField()
available = models.BooleanField(default=True)
classroom = models.ManyToManyField(Classroom, related_name='appointments')
编辑:
可以将可用性放在Classroom和Appointment之间的中间表中,而ManyToManyField应该有through=tablename
,其中tablename是该表的名称。
编辑:
其实我想吃晚饭,但这个问题现在比我的胃口更重要了:)
class Classroom(models.Model):
name = CharField(max_length=128)
class WeekendDay(models.MOdel): # this was before Appointment
day = models.DateField()
classroom = models.ManyToManyField(Classroom, through="Appointment")
class Appointment(models.Model)
available = models.BooleanField(default=True)
weekend_day = models.ForeignKey(WeekendDay, related_name='appointments_per_day')
classroom = models.ForeignKey(Classroom, related_name='appointments_per_classroom')
我认为这样的事情应该有用,如果你有很多教室,这些教室可以在很多天内使用。通过字段available
,您可以查看或设置可用性。如果在下周六预订了教室,那么它的值应该设置为False
。这应该是基本的骨架,您可以根据需要扩展模型。